我懷疑java.util.concurrent.ExecutorService
是否應在所有任務完成或取消後關閉?java.util.concurrent.ExecutorService應該以java.sql.Connection的形式關閉嗎?
我有這樣的方法:
public void testProxies() {
// 5 thread
ExecutorService exec = Executors.newFixedThreadPool(5);
try {
while(condition){
exec.execute(new Runnable() {
@Override
public void run() {
//some task
}
});
}
} catch (Exception e) {
e.printStackTrace();
} finally {
exec.shutdown();// should be shutdown here?
}
}
是,使用ExecutorService
的當期的方式嗎?
如何重複使用ExecutorService
?
ExecutorService
應該關機還是放手吧?
我不完全同意你的看法。即使執行程序中有任務正在運行,如果調用System.exit(),程序仍然會退出。當執行器不再需要時,也應該調用shutdown方法,並且它不應該接受更多的任務(這並不意味着如果有正在運行的任務,它們將被終止並且你的程序將很好地退出)。 –
@AlexCalugarescu那不是我說的。即使執行程序未關閉,System.exit()也會終止程序,但如果關閉執行程序,則程序可以不需要System.exit()調用就終止。 – assylias
@AlexCalugarescu我同意關機不會取消正在運行的任務(shutdownNow) - 但我並沒有暗示這一點。 – assylias