4.2 方法定义
4.2.1 ExecutorService
4.2.2 ScheduledExecutorService
schedule
以上两种都是创建并执行一个一次性任务, 过了延迟时间就会被执行。
scheduleAtFixedRate
创建并执行一个周期性任务。过了给定的初始延迟时间,会第一次被执行。执行过程中发生了异常,那么任务就停止。
一次任务执行时长超过了周期时间,下一次任务会等到该次任务执行结束后,立刻执行,这也是它和scheduleWithFixedDelay的重要区别
scheduleWithFixedDelay
创建并执行一个周期性任务。过了初始延迟时间,第一次被执行,后续以给定的周期时间执行。执行过程中发生了异常,那么任务就停止。
一次任务执行时长超过了周期时间,下一 次任务会在该次任务执行结束的时间基础上,计算执行延时。
对于超过周期的长时间处理任务的不同处理方式,这是它和scheduleAtFixedRate的重要区别。
实例
- 测试例子
测试实现
运行结果
可以看出超过core的线程都在等待,线程池线程数量为何达不到最大线程数呢?那这个参数还有什么意义, 让我们继续往下阅读吧!