在1.5以后的java版本中使用ScheduledExecutorService替代了老旧的Timer.java
ScheduledExecutorService的实现类是ScheduledThreadPoolExecutor, 一个具有Schedule task功能的ThreadPoolExecutor.并发
ScheduledExecutorService.submit(..) execute(..) invokeAll(..) 等方法与ExecutorService彻底相同.spa
ScheduledExecutorService.schedule(Callable<T> callable, long delay, TimeUnit unit), 延迟delay*unit时间执行该线程.线程
ScheduledExecutorService.schedule(Runnable command, long delay, TimeUnit unit), 延迟delay*unit时间执行该线程.it
ScheduledExecutorService.scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit), 屡次执行该线程, 除非线程抛出Exception或cancelation/termination the executor, 不会并发执行, 延迟(initialDelay + period*(n-1))*unit时间屡次执行第n次, 若是一个线程执行时间超过period*unit则在执行完该线程以后马上开始下一个线程.io
ScheduledExecutorService.scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)), 屡次执行该线程, 除非线程抛出Exception或cancelation/termination the executor, 不会并发执行, 延迟initialDelay*unit时间执行第一个线程, 以后每隔delay*unit时间执行下一个线程.class