//Timer和ScheduledThreadPoolExecutor的区别:
a.Timer是单线程运行,一旦任务执行缓慢,下一个任务就会推迟,而如果使用了ScheduledThreadPoolExecutor线程数可以自行控制
b.当Timer中的一个任务抛出异常时,会导致其他所有任务都不执行
c.ScheduledThreadPoolExecutor可以异步执行
ScheduledExecutorService接口继承了ExecutorService,在ExecutorService的基础上新增了以下几个方法:
①schedule方法:
public ScheduledFuture<?> schedule(Runnable command,
long delay, TimeUnit unit);
command:执行的任务 Callable或Runnable接口实现类
delay:延时执行任务的时间
unit:时间单位
②scheduleAtFixedRate方法:
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command,
long initialDelay,
long period,
TimeUnit unit);
command:执行的任务 Callable或Runnable接口实现类
initialDelay:线程第一次执行任务延迟时间
period:两个连续线程之间的周期
unit: