其实是一个不值得一提的小问题,不过既然验证了,就拿出来分享一下吧。
OneCoder在要做一个周期性的任务,Timer即可实现,不过考虑到有可能在一个周期内,任务可能没有结束,不知道Timer的处理方式,是直接启动下一个,还是等待完成,还是可配置的。于是OneCoder进行了一个简单的验证:
/**
* @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);
}
}
结论也很简单,下一个任务会等待上一个任务执行完成再启动。也算合理。