Java多线程系列--线程池的种类

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

    • newFixedThreadPool
  • newCachedThreadPool

  • newSingleThreadExecutor

  • newScheduledThreadPool

叙述

============================================================

一般情况下,我们并不直接使用 ThreadPoolExecutor 类创建线程池,而是通过 Executors 工具类去构建线程池。通过 Executors 工具类,我们可以构造5中不同的线程池。

newFixedThreadPool


构建包含固定线程数的线程池,默认情况下,空闲线程不会被回收。

public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {

//corePoolSize跟maximumPoolSize值一样,同时传入一个无界阻塞队列

//根据上面分析的woker回收逻辑,该线程池的线程会维持在指定线程数,不会进行回收

return new ThreadPoolExecutor(nThreads, nThreads,

0L, TimeUnit.MILLISECONDS,

new LinkedBlockingQueue(),

threadFactory);

}

定长线程池:

  1. 可控制线程最大并发数(同时执行的线程数)

  2. 超出的线程会在队列中等待

newCachedThreadPool


构建线程数不定的线程池,线程数量随任务量变动,空闲线程存活时间超过60秒后会被回收。

不固定线程数量,且支持最大为Integer.MAX_VALUE的线程数量。

public static ExecutorService newCachedThreadPool() {

//这个线程池corePoolSize为0,maximumPoolSize为Integer.MAX_VALUE

//意思也就是说来一个任务就创建一个woker,回收时间是60s

return new ThreadPoolExecutor(0, Integer.MAX_VALUE,

60L, TimeUnit.SECONDS,

new SynchronousQueue());

}

可缓存线程池:

  1. 线程数无限制

  2. 有空闲线程则复用空闲线程,若无空闲线程则新建线程

  3. 一定程序减少频繁创建/销毁线程,减少系统开销

newSingleThreadExecutor


构建线程数为1的线程池,等价于 newFixedThreadPool(1) 所构造出的线程池。

public static ExecutorService newSingleThreadExecutor() {

//线程池中只有一个线程进行任务执行,其他的都放入阻塞队列

//外面包装的FinalizableDelegatedExecutorService类实现了finalize方法,在JVM垃圾回收的时候会关闭线程池

最后

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。

新鲜出炉的蚂蚁金服面经,熬夜整理出来的答案,已有千人收藏

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
链图片转存中…(img-tDcouzDd-1714445645312)]

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值