[英]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.