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