大家好!
我有一个线程更新观察者模式的 View 。更新运行良好,但问题是中断不起作用。请帮忙。
主要内容:
public class Main {
public static Sensor s;
public static Thread t;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
s = new Sensor (1);
t = new Thread(){
@Override
public void run() {
Random r = new Random ();
while (!isInterrupted())
{
try {
s.setTemp(r.nextInt(40));
s.notifyObservers(s.getTemp());
sleep(500);
} catch (InterruptedException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
};
JFrame jf = new JFrame();
jf.setVisible(true);
s.addObserver(jf);
t.start();
}
}
查看(中断按钮):
private void bt_stopActionPerformed(java.awt.event.ActionEvent evt) {
Main.t.interrupt();
}
最佳答案
当 Thread.sleep()
抛出 InterruptedException
时,您的 interrupted
线程标志设置为 false
(请引用 JavaDoc 中的 Thread.sleep()
),因此您需要在 catch 中添加
子句。interrupt()
或 break
关于java - 在 Java 中中断无限线程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5693392/