我需要安排一些将来要做的工作。我可以通过两种方式做到这一点:
TimerTask
并执行timer.schedule(...);
Executors.newScheduledThreadPool(1)
:ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
ScheduledFuture <?> scheduleHandle = scheduler.schedule(pushExternalRunnable,
runScheduleDate.getTime() - now.getTime(), TimeUnit.MILLISECONDS);
这两种将来安排工作的方式有什么区别?
最佳答案
最大的区别是,Timer将在单个后台线程中调度其所有任务。另一方面,ExecutorService将创建新线程(如有必要)以运行任务(达到您指定的池的大小,此时将对任务进行排队)。