无法使用和停止线程

时间:2013-05-09 07:10:58

标签: java multithreading

我从上一个问题中得到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");

在无限循环中工作。

提前致谢。

1 个答案:

答案 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;
}