2012-01-09 5 views
5

ThreadPool을 사용하여 Java로 응용 프로그램을 작성합니다. 먼저 새로운 ThreadPool을 만듭니다.Java의 스레드 풀

private ExecutorService threadExecutor = Executors.newFixedThreadPool(20); 

그런 다음 Runnable 개체를 만듭니다. 그 후 ThreadPool을 실행하여 때때로 동일한 Runnable 객체를 전달합니다.

threadExecutor.execute(serverRunnable); 

20 초마다이 ThreadPool을 실행합니다. 내 문제는 threadExecutor가 약 5 분 동안 작동을 멈춘다는 것입니다. Runnable 객체를 실행하지 않습니다. 나는 논쟁이 증가 할 때 그것을 알게된다 :

Executors.newFixedThreadPool(20); 

20에서. 100 ThreadPool이 더 오래 작동합니다. 아무도 왜 ThreadPool이 작동을 멈추게하는지 설명 할 수 있습니까?

ps. 당신이 20 초마다 대신로 스케줄을 사용하려고 실행을위한 작업으로 예약 할 경우 I는 안드로이드 먼저

+1

'serverRunnable' 개체의 코드를 게시하십시오. – artbristol

+3

Runnable이 올바르게 정지합니까? 'run()'메소드를 끝내지 않으면 풀이 고갈되고'execute()'는 풀의 한 슬롯이 사용 가능할 때까지 기다리는 것을 잠급니다. – Viruzzo

+0

예를 들어 serverRunnable을 사용합니다. ThreadPoll에 많은 다른 Runnable을 전달하고 모두 멈 춥니 다. 그들 중 일부는 사소한 작업을 수행하여 로그에 무언가를 씁니다. – klemens

답변