달력

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

'JAVA이야기'에 해당되는 글 119

  1. 2011.09.19 [ThreadPool] 오래실행되는 작업
2011. 9. 19. 20:43

[ThreadPool] 오래실행되는 작업 JAVA이야기2011. 9. 19. 20:43

제한 없이 계속해서 대기하는 기능 대신 일정시간 동안마나 대기하는 메소드를 사용할 수 있다면, 오래 실행되는 작업이 주는 악영향을 줄일 수 있는 하나의 방법으로 볼 수 있다.

자바 플랫폼 라이브러리에서 제공하는 대부분의 블로킹 메소드는 시간이 제한되지 않은 것과 시간이 제한된 것이 함께 만들어져있다.
예) BlockingQueue.put CountDownLatch.await, Selector.select
대기하는 도중에 지정한 시간이 지나면 해당 작업이 제대로 실행되지 못했다고 기록해두고 일단 종료시킨 다음 큐의 맨 뒤에 다시 추가하는 등의 대책을 세울 수 있다. (라운드 로빈 알고리즘)

스레드 풀 크기 조절
스레드 풀의 크기가 크다면 서로 자원을 획득하기 위해 경쟁을 할테고, 
스레드 풀의 크기가 작다면 자원이 남아서 작업 처리 속도가 느려질 수 있다.

CPU(n) + 1 = ThreadPool_Size
Threads(n) = CPU(n) * U(0<x<1) * (1 + W/C)
U : CpU의 활용도
W/C : 작업 시간 대비 대기 시간의 비율


 

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

집중 대응 정책  (0) 2011.09.19
ThreadPoolExecutor  (0) 2011.09.19
[ThreadPool] 활용  (0) 2011.09.19
인터럽트에 응답하지 않는 블로킹 작업 다루기  (0) 2011.09.01
인터럽트 정책  (0) 2011.09.01
:
Posted by НooпeУ


Code Start Code End