【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字!

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着Mic学架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值