【高并发系列】17、线程池那些事儿1

多线程软件设计方法可以最大限度地发挥现代多核处理器的计算能力,提高生产系统的吞吐量和性能;

JDK提供的Execotur框架:

1、固定大小线程池newFixedThreadPool

5个固定大小的线程池,提交10个任务,分2批执行任务;

console

2、newCachedThreadPool

如果换成Executors.newCachedThreadPool();则直接创建10个线程执行任务,打印如下:

3、计划任务 ScheduledExecutorService

3.1 scheduleAtFixedRate

任务调度的频率是一定的

任务执行需要先1秒多,任务间隔是3秒,所以打印如下:

如果将任务执行需要1秒改为5秒,即任务执行所需时间5秒大于任务执行间隔,则任务执行完之后立即执行下一个任务,即任务间隔改为5秒;

 

3.2 scheduleWithFixedDelay

任务之间的间隔是一定的

任务1秒,间隔3秒,打印出来间隔为4秒:

如果将任务执行需要1秒改为5秒,则打印出来实际间隔为8秒:

4、调度程序不一定会无限期地持续执行,如果任务本身抛出异常,后续的所有执行都会中断!

必须做好异常处理!

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年1月15日
下一篇 2019年1月15日

相关推荐