Thread (스레드)_기본 스레드 사용 [1/3]

codevang.tistory.com/174?category=827591

- 스레드 생성 - Thread / Runnable 

- 스레드 우선순위 

- 동기화 처리 - synchronized

- 스레드 상태값

 

 

 

Thread (스레드)_스레드 제어 [2/3]

codevang.tistory.com/182?category=827591

- [ wait(), notify(), notifyAll() ]

- 스레드를 조금 더 세밀하게 제어할 수 있도록 해주는 메소드

- 동기화(Synchronized) 처리가 된 블록 안에만 사용이 가능

- wait() : 스레드 상태를 RUNNABLE → WAITING 상태로 변경

- notify() : WAITING 상태의 특정 스레드를 RUNNABLE 상태로 변경

- notifyAll() : WAITING 상태의 모든 스레드를 RUNNABLE 상태로 변경

- join() :어떤 Thread가 종료될때까지 기다립니다., (갑 스레드 작업이 완료된 후 을 스레드가 동작하도록 함)

- sleep() : 스레드를 일정 시간 동안 멈춰둠 (TIME_WAITING 상태로 전환)

- interrupt(), intterupted(), isInterrupted()

sleep(), wait(), join() 메소드가 실행되어 중지(실행 대기 상태)되어 있는 스레드의 실행을 중지함

대기 상태가 아닌 경우 interrupt() 발생 여부를 확인하여 종료시킴

 

 

 

 

Thread (스레드)_스레드풀 [3/3]

codevang.tistory.com/183?category=827591

[ 스레드 풀 (Thread Pool) ]

- 미리 스레드를 생성해두고 재활용해가며 작업을 할당

- 미리 생성해둔 스레드를 모아둔 묶음을 스레드 풀이라고 함

- ExecutorService, Executors, newFixedThreadPool

- Runnable인터페이스 ,run()  ===== 비슷?  Callable인터페이스 , call()

 

- 스레드풀의 스레드 동작시키기 

-  Future 객체를 통한 스레드 블록킹 (작업 결과 통보받기) 

-  ExecutorCompletionService Class - 먼저 종료되는 스레드 순으로 작업 처리하기 

- 스레드 종료

ExecutorService 클래스의 shutdown() : 현재 실행 중인 작업이 끝나고 스레드풀 종료

ExecutorService 클래스의 shutdownNow() : 즉시 스레드풀 종료