我是java中的多线程新手,我不知道如何停止线程。我有一个ArrayList
我想停止的线程。这是我的代码片段:
class PrimeThread implements Runnable {
public void run() {
while(flag) {
//do some stuff
}
}
public void cancel() {
flag = false;
}
...
}
Class MainClass {
public static void stopPrimeThreads() {
for(int i=0; i<primeThreadList.size(); i++) primeThreadList.get(i).cancel();
}
}
我尝试通过将flag
变量设置为来停止线程false
。该flag
变量是volatile boolean
在类本身中声明的。我还尝试使用外部类变量作为哨兵,但这也不起作用。非volatile
变量也不能完成这项工作。当我使用不推荐使用的stop()
方法时,我得到了我想要的行为,但我不想使用不推荐使用的方法。有人知道如何解决这个问题吗?我错过了一些基本的东西吗?提前致谢。