[英]Java Thread every X seconds
以給定速率安排一段Java代碼的最簡單方法是什么?
在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);
通過使用ScheduledExecutorService 。
看看Executors.newScheduledThreadPool
。 它將允許您創建一個ScheduledExecutorService
,它允許您定期執行Runnable
。
while (true) {
thread.sleep(1000)
method();
}
在許多情況下,會有更好的選擇。 但這是以1000ms + n的間隔實現method()的常規執行的最簡單方法(其中n是執行method()所花費的時間)
當然,不是1000,你可以把你想要的任何毫秒值。 在另一個線程控制的標志上實現while循環也是一個想法; 這樣就有辦法停止執行循環而不必殺死程序。
使用以下代碼:
Timer timer = new Timer();
timer.schedule( new TimerTask()
{
public void run() {
// do your work
}
}, 0, 60*(1000*1));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.