美文网首页
JDK1.8 创建线程池有哪几种方式?

JDK1.8 创建线程池有哪几种方式?

作者: Java老白 | 来源:发表于2022-03-04 16:51 被阅读0次

    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页,全部为大家展示出来肯定是不太现实的,为了不影响大家的阅读体验就只展示了部分内容,还望大家海涵,需要学习的,点击这里免费领取。

    相关文章

      网友评论

          本文标题:JDK1.8 创建线程池有哪几种方式?

          本文链接:https://www.haomeiwen.com/subject/mujmrrtx.html