newFixedThreadPool
定长线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程数量不再变化,当线程发生错误结束时,线程池会补充一个新的线程
测试代码:

打印结果:

newCachedThreadPool
可缓存的线程池,如果线程池的容量超过了任务数,自动回收空闲线程,任务增加时可以自动添加新线程,线程池的容量不限制
测试代码:

打印结果:

newScheduledThreadPool
定长线程池,可执行周期性的任务
测试代码:

打印结果:

newSingleThreadExecutor
单线程的线程池,线程异常结束,会创建一个新的线程,能确保任务按提交顺序执行
测试代码:

打印结果:

newSingleThreadScheduledExecutor
单线程可执行周期性任务的线程池
测试代码:

打印结果:

newWorkStealingPool
任务窃取线程池,不保证执行顺序,适合任务耗时差异较大。
线程池中有多个线程队列,有的线程队列中有大量的比较耗时的任务堆积,而有的线程队列却是空的,就存在有的线程处于饥饿状态,当一个线程处于饥饿状态时,它就会去其它的线程队列中窃取任务。解决饥饿导致的效率问题。
默认创建的并行 level 是 CPU 的核数。主线程结束,即使线程池有任务也会立即停止。
测试代码:

打印结果如下,index:8,index:9并未打印出:

金三银四已经开始了,许多程序员朋友最近要冲击大厂,自己总结的一些面试大厂的 PDF 及其答案,免费分享给大家,希望对大家今年找工作有所帮助
Java 基础技术

Java 集合

JVM

多线程与高并发



SSM 框架
Java 横向技术

数据库

消息中间件


Linux

Elasticsearch

最后
整份文档一共有将近 300页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,需要学习的,点击这里免费领取。
网友评论