【发布时间】:2013-11-21 22:50:31
【问题描述】:
所以我有一个线程,我以前无法运行,但现在由于该站点上的一位成员而得到解决,可以在 here 找到该问题。
为了停止我的线程,我在线程类中创建了一个布尔值并将其设置为 false,如果它设置为 true,那么线程应该停止。我什至通过打印线程来检查何时停止线程,但它打印 true (它应该)但线程继续运行。
我的线程 (CheckFiles.java) 类如下所示。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
class CheckFiles extends Thread {
static boolean stop = false;
public void run() {
while (!stop) {
System.out.println("Thread " + stop);
try {
String line;
BufferedReader b = new BufferedReader(new FileReader(UserInterface.location));
while((line = b.readLine()) != null) {
Ststem.out.println(line);
}
} catch (IOException e) { System.out.println(e); }
}
}
}
要停止线程,我有一个按钮,它的代码如下所示。
stopChecking.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
CheckFiles.stop = true;
System.out.println(CheckFiles.stop); //Prints true when pressed
}
});
为什么我的线程没有停止,或者有更好的方法吗?
编辑:当我尝试中断线程时出现语法错误
无法从 Thread 类型对非静态方法 interrupt() 进行静态引用
此外,当我使布尔停止 volatile 时,线程仍在运行。
【问题讨论】:
-
你有两个错误;您需要同时使用
volatile并中断阻塞线程。 -
这两种我都试过了,并在原帖中添加了错误。
-
搜索那个错误;这是一个骗子,但我还不能在几分钟内将其标记为重复。
标签: java multithreading