gpt4 book ai didi

java - 线程 : How to interrupt a thread from outside of that thread

转载 作者:行者123 更新时间:2023-12-01 22:58:13 24 4
gpt4 key购买 nike

我有一个简单的 GUI,其中有两个按钮:PrintStop

当用户按下打印时,已保存的数字将循环连续打印

当用户按下停止时,打印停止

我正在一个单独的线程中处理数字的打印,因为我需要线程在再次打印之前 hibernate 一毫秒。

printBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {

Thread a= new Thread(new Runnable(){
public void run(){
textArea.setText("");
for (int i=0; i<10; i++){
int result= 0;
System.out.println(result+"\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
a.start();
}
});

现在在“停止”按钮的 ActionListener 中,我希望中断或停止第一个线程。 由于需要从另一个线程中断它,我该怎么做?

最佳答案

如果您的第一个线程不包含线程阻塞操作,您可以检查 for 循环中的标志,当您按“停止”按钮。

public class WriterThread implements Runnable {

private volatile boolean stopped = false;

public synchronized void stop() {
this.stopped = true;
}

public void run(){
textArea.setText("");

for (int i=0; i<10; i++) {
if (this.stopped) {
break;
}

int result= 0;
System.out.println(result+"\n");

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}

关于java - 线程 : How to interrupt a thread from outside of that thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731506/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com