因此,假設我在for循環中創建並啓動了一堆線程,該線程正在啓動程序線程的run方法中執行。我們還要說,我希望能夠中斷啓動程序線程和線程創建的所有線程,並且我通過一個按鈕來完成。另一個正在運行時禁止一個任務
因此,像這樣 -
try{
for(int i = 0; i < n;i++){
Worker currThread = new Worker(someArgs);
workerThreads.add(currThread);
currThread.start();
}
} catch (InterruptedException e){
e.printStackTrace();
}
按鈕 -
public void actionPerformed(ActionEvent arg0) {
List<Worker> threads = launchThread.getWorkerThreads();
for(int i = 0; i < threads.size();i++){
threads.get(i).interrupt();
}
launchThread.interrupt();
}
現在,讓我們說,我想,這樣的中斷可以在同一時間線程創建不發生做出來。我想辦法做到這將是構建一個虛擬對象,並把代碼兩片鎖
synchronized(dummyObject){
//thread creation or interruption code here (shown above)
}
請問這樣的工作
裏面?我問,因爲我不知道如何測試,看看會不會。
如果你的線程沒有被編程來檢查中斷標誌,調用'interrupt'將不會執行任何操作。也許唯一的影響是可見的,如果你的線程在等待或阻塞狀態。但是,如果他們處於跑步狀態,他們不會停下來,除非他們被編程。 –