java ScheduledThreadPoolExecutor在线程执行器中执行周期任务

是什么?为什么?怎么办?

 

一、是什么

ScheduledThreadPoolExecutor是ThreadPoolExecutor的子类,功能类似Timer,内置线程池,支持错误处理和并发。

二、为什么

提到周期任务就不得不提到Timer,但是Timer有其缺点:

http://www.xie4ever.com/2017/03/30/java-timer%E7%9A%84%E7%BC%BA%E7%82%B9/

为了克服这些缺点,我们使用ScheduledThreadPoolExecutor执行周期任务。

三、怎么做

1.简单例子

执行结果:

2.如果某个周期任务报错

运行结果:

报错的周期任务不再周期执行,而其他的任务不受其影响,依旧按周期执行。

3.复杂一点的例子

执行一定次数之后,停止执行周期任务。

四、总结

要体会到ScheduledThreadPoolExecutor的优点。