newScheduledThreadPool

newScheduledThreadPool

我需要安排一些将来要做的工作。我可以通过两种方式做到这一点:

  • 创建一个TimerTask并执行timer.schedule(...);
  • 使用Executors.newScheduledThreadPool(1):
    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    ScheduledFuture <?> scheduleHandle = scheduler.schedule(pushExternalRunnable,
            runScheduleDate.getTime() - now.getTime(), TimeUnit.MILLISECONDS);
    

  • 这两种将来安排工作的方式有什么区别?

    最佳答案

    最大的区别是,Timer将在单个后台线程中调度其所有任务。另一方面,ExecutorService将创建新线程(如有必要)以运行任务(达到您指定的池的大小,此时将对任务进行排队)。

    09-25 16:34