1
我正在創建用戶線程並將它們放入size = 5的固定池中。我希望我的線程在5分鐘內執行。這些線程在遠程服務器上完成一些數據庫操作但由於網絡延遲,一些線程停止並等待來自遠程服務器的響應,並因此導致我不想要的延遲。所以我希望所有待處理的線程在5分鐘內完成,否則它們應該在特定的超時時間內被殺死或中斷。我怎樣才能做到這一點。在Executors.newFixedThreadPool中的單個線程上超時
我使用Jdk.1.6.0_45
int i = 0;
ExecutorService executor = Executors.newFixedThreadPool(5);
while (i < 10) {
ThreadClass thread = new ThreadClass();
thread.setCounter(i);
executor.execute(thread);
i++;
}
executor.shutdown();
System.out.println("Wiating for threads to terminate");
while (!executor.isTerminated()) {}
System.out.println("Finished all threads");
名稱'ThreadClass'表明它是Thread的子類。這是真的,還是隻是一個Runnable的實現? – isnot2bad
是的,它是Thread的子類。 –
然後這是錯的。任務和線程之間不同。任務是一項必須完成的工作(通常是一個Runnable)。線程是並行運行代碼的機制。執行者已經在內部使用線程來執行任務。 ThreadClass應該是一個任務。重命名它並且不是從Thread派生而是實現Runnable! – isnot2bad