5
我使用ThreadPool在Java中編寫應用程序。首先我創建一個新的ThreadPool:Java中的線程池
private ExecutorService threadExecutor = Executors.newFixedThreadPool(20);
然後我創建了一些Runnable對象。從那以後,我執行我的線程池不時路過他同樣Runnable對象:
threadExecutor.execute(serverRunnable);
我執行此線程池每20秒。我的問題是,threadExecutor停止工作大約5分鐘。它只是不執行Runnable對象。我注意到當我增加參數時:
Executors.newFixedThreadPool(20);
從20到100 ThreadPool將工作更長時間。任何人都可以解釋爲什麼ThreadPool停止工作?
Ps。如果要計劃作爲任務執行每20秒嘗試使用的ScheduledThreadPoolExecutor,而不是我寫的Android
請發佈您的'serverRunnable'對象的代碼。 – artbristol 2012-01-09 10:00:57
你的Runnable是否正確停止?如果他們永遠不會結束他們的'run()'方法,你的池將被耗盡,'execute()'將鎖定等待池中的一個插槽可用。 – Viruzzo 2012-01-09 10:03:44
那麼我使用serverRunnable爲例。我將許多不同的Runnable傳遞給ThreadPoll,它們都停下來。他們中的一些人做了簡單的工作,在日誌中寫下一些東西。 – klemens 2012-01-09 10:04:48