我想停止一个没有循环的线程,如
while(!cancelled) //where cancelled is volatile variable
{
//
}
不能用,因为我想在没有循环的情况下执行长时间运行的任务, 如果从父线程
中的任何一个发生异常,如何停止子线程@Oliver
正如oracle docs中提到的那样
for (int i = 0; i < inputs.length; i++) {
heavyCrunch(inputs[i]);
if (Thread.interrupted()) {
// We've been interrupted: no more crunching.
return;
}
}
在上面的代码if()只有在heavyCrunch(inputs [i])完成时才会调用
答案 0 :(得分:0)
看起来你的目标是中断驱动的应用程序。您可以保留已生成的线程列表,并在异常中迭代其他线程并中断它们。
https://docs.oracle.com/javase/tutorial/essential/concurrency/interrupt.html