我有一个线程,它会在一定时间间隔后以固定间隔在后台执行某些任务。

但是我想控制何时应该终止线程,这是我实现的方式。

class Task extends Thread {
  private boolean kill= false,repeat = false;
  public void kill() {
    kill = true;
  }
  public void repeat() {
    repeat = true;
  }
  public void run() {
    do {
      //wait until the required time has elapsed
      while(!isTimeElapsed() && !kill) {
       Thread.sleep(1000);
      }
      if(!kill) {
      //time to work, do stuff
      }
    } while(repeat & !kill);
  }
}


该代码按我的要求工作,但是Netbeans通知我说:“循环调用Thread.sleep()可能会导致性能问题”。但这并没有建议做我想做的更好的方法。

但是,是否有更好的方法来执行我想要的操作,即让线程等待固定的时间,但又具有随时随地杀死线程的灵活性?

最佳答案

这是一个原始示例,演示如何使用它们:

import java.util.Timer;
import java.util.TimerTask;

public class Greeter {
   private static class SayHello extends TimerTask {
      @Override
      public void run() {
         System.out.println("Hello");
      }
   }
   public static void main(String[] args) throws InterruptedException {
      Timer t = new Timer();
      int delay = 0;
      int period = 1000; // milliseconds
      t.scheduleAtFixedRate(new SayHello(), delay, period);

      Thread.sleep(5000); // Do something

      t.cancel();
   }
}

关于java - 有比使用Thread.sleep()更好的方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23185049/

10-14 23:56