Thread
-
[JAVA] 쓰레드(Thread)의 동기화 / synchronized / Lock과 Condition / fork & join 프레임워크DEV/JAVA 2024. 4. 23. 20:27
멀티쓰레드 프로세스의 경우 여러 쓰레드가 같은 프로세스 내의 자원을 공유해서 작업하기 때문에 서로의 작업에 영향을 주게된다. 한 쓰레드가 특정 작업을 끝마치기 전까지 다른 쓰레드에 의해 방해받지 않도록 하는것이 필요한데, 그래서 도입된 개념이 '임계 영역'과 '잠금(락,lock)'이다. - 공유데이터(객체)를 사용하는 코드 영역 : 임계 영역으로 지정 - 공유데이터(객체)가 가지고 있는 lock을 획득한 단 하나의 쓰레드만 임계영역 내 코드를 수행, 임계영역에서 벗어나서 lock을 반납해야 다른 쓰레드가 반납된 lock을 획득하여 임계영역 내 코드 수행 가능 → 즉, 쓰레드의 동기화란 한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하도록 막는것 방법 synchronized 블럭 사용 Lock과 C..
-
[JAVA] 쓰레드 (Thread)의 구현 / 싱글쓰레드, 멀티쓰레드 / 우선순위 / 쓰레드 그룹 / 데몬 쓰레드DEV/JAVA 2024. 4. 5. 00:37
1) 프로세스(Process)와 쓰레드(Thread)의 차이 - 프로세스 : ‘실행중인 프로그램’ → 작업관리자에서 실행중인 프로그램의 프로세스 확인 가능 - 쓰레드 : 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 따라서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재. 둘 이상의 쓰레드를 가진 프로세스를 ‘멀티쓰레드 프로세스’라고 함 2) 쓰레드의 구현방법 : Thread클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법이 있다. //1. Thread 클래스 상속 class MyThread extends Thread { public void run() { .. } //Thread 클래스의 run()을 Overriding } //2. Runnable 인터페이스 구현 class ..