Подтвердить что ты не робот

Java Thread каждые X секунд

Какой самый простой способ иметь кусок Java-кода, запланированный с заданной скоростью?

4b9b3361

Ответ 1

В Java 5+ с ScheduledExecutorService:

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

Вышеуказанный метод предпочтительнее. До Java 5 вы использовали Timer и TimerTask:

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

Ответ 2

Используя ScheduledExecutorService.

Посмотрите Executors.newScheduledThreadPool. Это позволит вам создать ScheduledExecutorService, который позволяет отправлять Runnable для выполнения через регулярные промежутки времени.

Ответ 3

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

Во многих случаях будут лучшие альтернативы. Но это самый простой способ реализовать регулярное выполнение вашего метода() с интервалом 1000 мс + n (где n - количество времени, затраченного на выполнение метода())

Конечно, вместо 1000 вы можете поместить любое желаемое миллисекунду. Также может быть идея реализовать цикл while на флаге, который управляет другой поток; так что есть способ остановить выполнение цикла без необходимости убивать программу.

Ответ 4

Используйте код ниже:

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