所以我有一个线程,我以前无法运行,但由于这个站点上的一个成员,这个问题现在已经解决了,这个问题可以在这里找到。
为了停止我的线程,我在线程类中创建了一个布尔值并将其设置为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 时,线程仍在运行。