因此,假设我在 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)
}
这种方式行得通吗?我问是因为我不确定如何测试它是否会。