Java Timer任务执行消耗事件大于执行周期问题验证
其实是一个不值得一提的小问题,不过既然验证了,就拿出来分享一下吧。
OneCoder在要做一个周期性的任务,Timer即可实现,不过考虑到有可能在一个周期内,任务可能没有结束,不知道Timer的处理方式,是直接启动下一个,还是等待完成,还是可配置的。于是OneCoder进行了一个简单的验证:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @author lihzh
* @alia OneCoder
* @blog http://www.coderli.com
*/
public class TimerMain {
/**
* JDK Timer类测试类。主要测试在一个Timer周期内,线程未结束时,timer的处理情况。
*
* @param args
* @author lihzh
* @alia OneCoder
*/
public static void main(String[] args) {
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
try {
System.out.println(Thread.currentThread().getName());
Thread.sleep(1000 * 5);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Timer timer = new Timer();
timer.scheduleAtFixedRate(timerTask, 0, 1000);
}
}
结论也很简单,下一个任务会等待上一个任务执行完成再启动。也算合理。
本文由作者按照 CC BY 4.0 进行授权