【发布时间】:2015-06-29 03:36:35
【问题描述】:
我有一个线程,它有一个称为终止的布尔值 - 当它设置为 true 时,线程应该停止 - 问题是当我将它设置为 false 时它没有向线程注册?如何在我的线程中直接将终止的值设置为 true?谢谢
btnPlayback.setOnMouseClicked(e -> {
Playback function = new Playback(list, progBar, settings);
Thread playback = new Thread(function);
if (recording == true) {
btnRecord.setText("Record");
recording = false;
}
if (playing == false) {
playing = true;
btnPlayback.setText("Stop");
playback.start();
} else {
playing = false;
btnPlayback.setText("Playback");
function.terminate();
}
});
这是在线程的类中
public void terminate() {
terminated = true;
}
应该阻止这样的陈述
for (InputValue i: list) {
if (terminated == false) {
【问题讨论】:
-
是
terminatedvolatile?也许改用AtomicBoolean? -
既然你说
Thread有terminate()的方法,那它可能不是function.terminate();而是playback.terminate();。否则很难解决问题,因为没有显示所有相关代码。
标签: java multithreading javafx