如何恢复一个帖子

时间:2013-09-10 00:38:23

标签: java multithreading

我在我的代码中使用了三个线程。当我按下“停止”按钮时它应该停止并且“启动”按钮应该恢复它们。我的代码是:

 private void jButton_stopActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    boolean result = value;
    if(result){
        t.stop();
        timer.stop();
        timer2.stop();
        value = false;
        jButton_stop.setText("Start");
    }
    else{
        t.resume();
        timer.resume();
        timer2.resume();
        value = true;
        jButton_stop.setText("Stop");
    }

但是当我点击“停止”按钮时,所有线程都完全停止,但是当我按下“开始”按钮时线程没有恢复。为什么?请帮帮我。

2 个答案:

答案 0 :(得分:4)

考虑tThread的实例:

  

不止一次启动线程永远不合法。 特别是,线程可能不是   完成执行后重新启动。

来自http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html

而且,Thread.stop()已被弃用。

线程本身应检查是否需要完成,例如正在检查的boolean run变量,或使用对象进行线程通信。

答案 1 :(得分:1)

您可以根据某个布尔值使其保持等待状态,例如:

 public void run() {
      try {
      for(int i = 15; i > 0; i--) {
         System.out.println(name + ": " + i);
         Thread.sleep(200);
         synchronized(this) {
            while(suspendFlag) {
               wait();
            }
          }
        }
      } catch (InterruptedException e) {
         System.out.println(name + " interrupted.");
      }
      System.out.println(name + " exiting.");
   }

您可以在此处更改线程外的suspendFlag状态。见here