我希望幾乎所有使用ExecutorService運行線程的人都必須注意到這一點。但是我找不到解決這個問題的辦法。因此我在問。執行者服務:爲什麼程序永遠不會停止?
我下面的程序永遠不會停止。我已經等了5分鐘,但程序仍在運行。
當我添加executor.shutdown()時,程序停止。 雖然我知道shutdown()方法的作用,但我不確定是否需要調用此方法每次我們都使用EXECUTORSERVICE?
public class Latch implements Runnable{
/**
* @param args
*/
public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(3);
ExecutorService executor = Executors.newFixedThreadPool(10);
for(int i = 0; i < 3; i ++){
executor.execute(new Latch(latch));
}
try {
latch.await();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("STOPPED");
executor.shutdown();
}
CountDownLatch latch;
Latch(CountDownLatch latch){
this.latch = latch;
}
@Override
public void run(){
System.out.println("Thread Started");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
latch.countDown();
}
}
一些可能的答案也在http://stackoverflow.com/a/22693393 – Marco13
是給定的,我確實看到了那個。謝謝! – Roger