java Timer facility
和ScheduledThreadPoolExecutor service
之间有什么区别或相应的限制?
我知道Timer
在single
帖子中运行,除此之外还有其他限制吗?
答案 0 :(得分:1)
单线程是Timer的主要限制:
计时器对任务不公平,例如:
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Task#1: " + System.currentTimeMillis());
}
}, 1000, 1);
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Task#2: " + System.currentTimeMillis());
}
}, 1200, 1);
将证明任务#2甚至没有在CPU时间拍摄。
ScheduledExecutorService
为您提供了对任务并发级别的正确控制。