Какой самый простой способ иметь кусок Java-кода, запланированный с заданной скоростью?
Java Thread каждые X секунд
Ответ 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));