简体   繁体   中英

Java Thread every X seconds

以给定速率安排一段Java代码的最简单方法是什么?

In Java 5+ with a ScheduledExecutorService :

ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable() {
  @Override
  public void run() {
    // do stuff
  }
}, 0, 5, TimeUnit.SECONDS);

The above method is favoured. Prior to Java 5 you used Timer and TimerTask :

timer.scheduleAtFixedRate(new TimerTask() {
  @Override
  public void run() {
    // do staff
  }
}, 0, 5000);

By using a ScheduledExecutorService .

Have a look at Executors.newScheduledThreadPool . It will allow you to created a ScheduledExecutorService which lets you submit Runnable s to be executed at regular intervals.

while (true) {
    thread.sleep(1000)
    method();
}

In many cases there will be better alternatives. But this is the easiest way to implement a regular execution of your method() at an interval of 1000ms + n (where n is the amount of time spent executing method())

Of course instead of 1000, you can put any millisecond value you desire. It could also be an idea to implement the while loop on a flag that another thread controls; so that there is an way to stop execution of the loop without having to kill the program.

Use below code :

Timer timer = new Timer(); 
timer.schedule( new TimerTask() 
{ 
    public void run() { 
    // do your work 
    } 
}, 0, 60*(1000*1));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM