【发布时间】:2015-08-18 23:05:17
【问题描述】:
我知道您可以中断从可运行类创建的线程,但是如何中断从方法创建的线程?使用 volatile 布尔值对我不起作用,所以我认为要么有更好的方法来做到这一点,要么我需要以某种方式中断它。我不想打断所有线程,就这一个。
我创建了一个启动线程的方法,如下所示:
public static void StartSyncThread() {
new Thread() {
public void run() {
isRunning = true; // Set to true so while loop will start
while (isRunning) {
...
}
} // Close run()
}.start();
}
....
public static void KillSyncThread() {
isRunning = false;
}
【问题讨论】:
-
这应该可以。即使您没有提供
isRunning声明,它也只有在isRunning被声明为封闭类的boolean静态时才会编译。 -
它不起作用。即使布尔值是不稳定的。当我调用 kill 时,它会继续运行。
-
您能提供
isRunning声明吗?我假设它被声明为封闭类的静态。也许您不小心在isRunning = true;行中添加了boolean,而run()方法没有对其他isRunning变量进行更改? -
public static volatile boolean isRunning = true -
请提供 MCVE。
标签: java multithreading thread-safety java-threads interruption