-
HashMap, Thread (1/11)Java 2022. 1. 11. 21:53
1/ HashMap
Key, Value
CRUD(put, get, put, remove)
2/ Thread
CPU가 워낙 작업속도가 빠르다보니, 다른 곳에서 데이터를 가져오면서 생기는 delay들이 있어. 자주 쓰는건 cache에서 가져오기도 하지만 메모리나 외부 디바이스랑 연결될때는 delay가 상대적으로 긴 시간 되는데, 그럴때 CPU에게 다른 작업을 하게 하는거지.
그런 해야할 작업을 Thread라고 하고, 여러 thread가 있지.
이 때 CPU가 작업이 끝나서 thread를 언제 실행시켜야할지는 개발자가 알 수 없고, OS에 맞는 JVM에서 알아서해줘.
JVM에 의해서 생성된 thread가 실행대기장소로 감 > 실행하고 소멸 or 실행하다가 어떤 이유로 일시정지하고 다시 실행대기 > 실행 > 소멸
코드
test1) Thread를 상속받은 클래스에 run()을 override > 상속받은 클래스 객체화 > start()
test2) Interface인 runnable을 implements한 클래스에 run()을 override > implements한 클래스 객체화 > Thread 객체화할때 (override한 run 사용할 수 있게) implements한 클래스를 arguments로 넣음. > start()
private void test1() { Thread1 t1 = new Thread1();//Thread 안에 run은 비어있음. 그래서 Thread1이 thread 상속받아서 run override햇음. Thread2 t2 = new Thread2(); t1.start(); t2.start(); } private void test2() { //Runnable 객체를 이용한 쓰레드의 실행 코드 작성. Thread를 상속받지 않았을때. //Runnable을 구현한 클래스를 만들고 //객체로 생성하여 Thread와 연결하세요. //객체 생성 MyRunnable my = new MyRunnable(); YourRunnable your = new YourRunnable(); //Thread와 연결 Thread t1 = new Thread(my); //Thread 안에 run()는 비어있음. 그래서 argument 안 넣으면 아무것도 실행 안돼. Thread t2 = new Thread(your); //your안에 run()을 실행함. t1.start(); t2.start(); }
'Java' 카테고리의 다른 글
byte 기반 입출력, 네트워크 socket, client, server (1/13) (0) 2022.01.13 입출력, stream, file 문자 기반 입출력 (1/12) (0) 2022.01.12 Collection, Framework (1/10) (0) 2022.01.11 상속, Upcasting, Overriding, 다형성, Downcasting (0) 2022.01.11 Abstract Class, Template, Interface (0) 2022.01.10