我从上一个问题中得到answer。但是现在我做完事情后一分钟后就无法使用和停止线程了。我实际上想在做完事情后一分钟后关闭/停止线程。所以,我很困惑:我怎么能这样做:
public class Frame2 extends javax.swing.JFrame implements Runnable{
public Frame2() {
initComponents();
}
public void run(){
long startTime = System.currentTimeMillis();
while (( System.currentTimeMillis() - startTime ) < 1000) {
System.out.print("DOING MY THINGS");
}
}
}
问题是它根本不起作用,当我关闭包含此Thread的帧时代码行
System.out.print("DOING MY THINGS");
在无限循环中工作。
提前致谢。
答案 0 :(得分:3)
当我关闭包含此线程的框架
时
框架不包含线程。框架可以引用它。但是线程本身将一直运行,直到它的执行完成(run
方法结束)而不是第二次。
你不能只是“停止”线程。它必须始终完成它的执行(再次,run
方法结束)。
你写的代码应该运行得很好,并在60秒内停止写东西。如果你希望它在关闭框架时终止,你应该添加一些变量来检查,并在你希望线程终止时写入true
。
示例:
private volatile boolean terminated = false;
public void run(){
long startTime = System.currentTimeMillis();
while (!terminated && System.currentTimeMillis() < startTime + 60000) {
System.out.print("DOING MY THINGS");
// here I want to do my things done in just one minute
// and after that I want to stop the thread at will!
}
}
public void stop() {
terminated = true;
}