2

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

 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");
    }

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

4

2 回答 2

4

考虑t是一个实例Thread

多次启动一个线程是不合法的。特别是,线程一旦完成执行就可能不会重新启动。

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

并且,Thread.stop()已弃用。

线程本身应该检查它是否需要完成,比如boolean run检查一个变量,或者使用对象进行线程通信。

于 2013-09-10T00:45:51.620 回答
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 状态。看这里

于 2013-09-10T00:47:38.040 回答