计时器超过ScheduledThreadPoolExecutor的限制

时间:2013-12-30 09:50:07

标签: java concurrency

java Timer facilityScheduledThreadPoolExecutor service之间有什么区别或相应的限制?

我知道Timersingle帖子中运行,除此之外还有其他限制吗?

1 个答案:

答案 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为您提供了对任务并发级别的正确控制。