Timer&TimerTask组合
// 延迟5s执行任务
new Timer("test1").schedule(new TimerTask() {
@Override
public void run() {
System.out.println("this is task delayed");
}
}, 5000);
当任务执行时间超过 interval间隔时间, 则 任务执行间隔时间 以任务执行时间为准
/*
演示任务执行时间 远大于 interval:间隔时间的情况。
task执行2000ms
而 intervals 执行间隔是1000ms
最终的结果是: 执行间隔 2000ms
*/
@Test
public void test2() {
final long[] lastTs = {0L};
new Timer("test2").schedule(new TimerTask() {
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
lastTs[0] = System.currentTimeMillis();
System.out.println("lastTs[0]: " + lastTs[0]);
}
}, 0, 1000);
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
线程池替代方案: ScheduledThreadPoolExecuter
网友评论