以前は実行できなかったスレッドがありますが、このサイトのメンバーのおかげで解決されました。その質問はここにあります。
スレッドを停止するには、スレッド クラスでブール値を作成し、それを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() への静的参照を作成できません
また、ブール値を揮発性にすると、スレッドはまだ実行されています。