• 【java面试】精讲!面试被问Java官方提供了哪几种线程池,分别有什么特点?


    “Java官方提供了哪几种线程池,分别有什么特点?”

    这是一道针对工作3年左右的面试题,你能回答上来吗?

    大家好,我是Mic,一个工作了14年的Java程序员

    关于这个问题的标准回答,我整理到了一个15W字的面试文档里面,大家可以扫描文章尾端二维码领取。

    下面看看高手的回答。

    大家记得点赞收藏加关注!!!

    需要高手面试文档面试文档的小伙伴可以扫描文章底部二维码

    高手:

    JDK中幕刃提供了5中不同线程池的创建方式,下面我分别说一下每一种线程池以及它的特点。

    • newCachedThreadPool, 是一种可以缓存的线程池,它可以用来处理大量短期的突发流量。

      它的特点有三个,最大线程数是Integer.MaxValue,线程存活时间是60秒,阻塞队列用的是SynchronousQueue,这是一种不存才任何元素的阻塞队列,也就是每提交一个任务给到线程池,都会分配一个工作线程来处理,由于最大线程数没有限制。

      所以它可以处理大量的任务,另外每个工作线程又可以存活60s,使得这些工作线程可以缓存起来应对更多任务的处理。

    • newFixedThreadPool,是一种固定线程数量的线程池。

      它的特点是核心线程和最大线程数量都是一个固定的值如果任务比较多工作线程处理不过来,就会加入到阻塞队列里面等待。

    • newSingleThreadExecutor,只有一个工作线程的线程池。

      并且线程数量无法动态更改,因此可以保证所有的任务都按照FIFO的方式顺序执行。

    • newScheduledThreadPool,具有延迟执行功能的线程池可以用它来实现定时调度

    • newWorkStealingPool,Java8里面新加入的一个线程池它内部会构建一个ForkJoinPool,利用工作窃取的算法并行处理请求。

    这些线程都是通过工具类Executors来构建的,线程池的最终实现类是ThreadPoolExecutor。

    总结

    这个问题考察大家对于线程池的基本认识。

    平时使用得比较少的同学可以好好学习一下线程池的底层原理然后再去理解JDK官方提供的几个线程池的实现。

    就可以随时回答出这个问题了。

    另外,我将所有Java面试系列制作成了完整的面试文档。它的便捷之处在于,可以通过检索的方式,找到你想要的面试题,目前已经更新180期,总计超过15W字!

    【想领取面试文档的小伙伴可以点击文章底部名片无套路免费赠送给大家!】

    需要高手面试文档面试文档的小伙伴可以扫描下方二维码
    ↓↓↓↓↓↓↓↓↓↓↓↓↓

  • 相关阅读:
    ArGIS Engine专题(14)之GP模型根据导入范围与地图服务相交实现叠置分析
    数据结构 - 7(Map和Set 15000字详解)
    Word设置封面无页码,摘要罗马数字页码,正文数字页码
    【网络安全】什么样的人适合学?该怎么学?
    virtio代码分析(一)-qemu部分
    Endpoint Central自动化软件部署
    机器学习-决策树
    JS-对象
    remix使用测试环境部署合约的时候账户都为空
    Web Workers RPC
  • 原文地址:https://blog.csdn.net/q331464542/article/details/126421118