달력

2

« 2025/2 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
2011. 9. 19. 21:03

ThreadPoolExecutor JAVA이야기2011. 9. 19. 21:03

ThreadPoolExecutor를 생성할 때 작업을 쌓아둘 큐로 BlockingQueue를 지정할 수 있다.
스레드 풀에서 작업을 쌓아둘 큐에 적용할 수 있는 전략에는 세가지가 있다.
1. 큐에 크기 제한을 두지 않는 방법
2. 큐의 크기를 제한하는 방법
3. 작업을 스레드에게 직접 넘겨주는 방법 ( 알아서 가져가는게 아니라)

newFixedThreadPool 메소드와 newStringThreadExectuor메소드에서 생성하는 풀은 기본 설정으로 크기가 제한되지 않은
LinkedBlockingQueue를 사용한다.
스레드 풀의 모든 작업이 실행중 일때 작업이 등록되면 해당 작업은 큐에 쌓이게 되며, 작업이 처리되는 속도보다 작업이 추가되는 속도가 빠르면 큐에 끝없이 계속해서 작업이 쌓일 쑤 있다.

ArrayBlockingQueue, LinkedBlockingQueue나 PriorityBlockingQueue와 같이 큐의 크기를 제한 시켜 사용하는 방법이 훨씬 안정적이다.

%SynchronousQueue : 블로킹되지 않는 방법으로 동작 

'JAVA이야기' 카테고리의 다른 글

Future클래스와 ExecutorService  (0) 2011.09.24
집중 대응 정책  (0) 2011.09.19
[ThreadPool] 오래실행되는 작업  (0) 2011.09.19
[ThreadPool] 활용  (0) 2011.09.19
인터럽트에 응답하지 않는 블로킹 작업 다루기  (0) 2011.09.01
:
Posted by НooпeУ


Code Start Code End