newFixedThreadPool
定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程
测试代码:
image-20220304164821159
打印结果:
image-20220304164828107
newCachedThreadPool
可缓存的线程池,如果线程池的容量超过了任务数,自动回收空闲线程,任务增加时可以自动添加新线程,线程池的容量不限制
测试代码:
image-20220304164841895
打印结果:
image-20220304164850908
newScheduledThreadPool
定长线程池,可执行周期性的任务
测试代码:
image-20220304164902670
打印结果:
image-20220304164910620
newSingleThreadExecutor
单线程的线程池,线程异常结束,会创建一个新的线程,能确保任务按提交顺序执行
测试代码:
image-20220304164922604
打印结果:
image-20220304164931773
newSingleThreadScheduledExecutor
单线程可执行周期性任务的线程池
测试代码:
image-20220304164947833
打印结果:
image-20220304164956320
newWorkStealingPool
任务窃取线程池,不保证执行顺序,适合任务耗时差异较大。
线程池中有多个线程队列,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,就存在有的线程处于饥饿状态,当一个线程处于饥饿状态时,它就会去其它的线程队列中窃取任务。解决饥饿导致的效率问题。
默认创建的并行 level 是 CPU 的核数。主线程结束,即使线程池有任务也会立即停止。
测试代码:
image-20220304165008381
打印结果如下,index:8,index:9并未打印出:
image-20220304165018825
金三银四已经开始了,许多程序员朋友最近要冲击大厂,自己总结的一些面试大厂的 PDF 及其答案,免费分享给大家,希望对大家今年找工作有所帮助
Java 基础技术
img
Java 集合
img
JVM
img
多线程与高并发
img
image.gif
img
SSM 框架
Java 横向技术
img
数据库
img
消息中间件
img
img
Linux
img
Elasticsearch
img
最后
整份文档一共有将近 300页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,需要学习的,点击这里免费领取。










网友评论