JDK自带的线程池有哪些?

本文介绍了JDK自带的四种线程池:FixedThreadPool(固定大小)、CachedThreadPool(缓存线程)、SingleThreadExecutor(单线程)和ScheduledThreadPool(定时任务)。它们分别针对不同场景提供线程管理和任务调度。
摘要由CSDN通过智能技术生成

JDK自带的线程池有哪些?

JDK自带的线程池主要包括以下几种类型:

  1. FixedThreadPool(固定大小线程池):

    • Executors.newFixedThreadPool(int nThreads) 工厂方法创建。
    • 线程池的大小固定,即核心线程数和最大线程数相等,且在创建时指定。
    • 当线程池中的所有线程都在处理任务时,新提交的任务会被放入无界的工作队列中等待,直到有线程空闲出来。
    • 适用于任务数量可控且并行度要求较高的场景,能够避免过多线程造成的资源浪费。
  2. CachedThreadPool(缓存线程池):

    • Executors.newCachedThreadPool() 工厂方法创建。
    • 线程池的大小不固定,可根据需要自动调整。
    • 当线程池中的线程都在处理任务时,新提交的任务会创建新的线程来执行,理论上线程数量无上限。
    • 线程空闲一段时间(通常为60秒)后会被自动回收,以释放系统资源。
    • 适用于处理大量短生命周期任务或者任务的创建和销毁开销较大的场景,能够快速响应新任务并减少线程创建和销毁的开销。
  3. SingleThreadExecutor(单一线程池):

    • Executors.newSingleThreadExecutor() 工厂方法创建。
    • 线程池中仅有一个工作线程,确保所有任务按照提交顺序在同一个线程中串行执行。
    • 新提交的任务如果发现线程正在执行其他任务,则会进入无界的工作队列中等待。
    • 适用于需要保证任务按照提交顺序执行,或者避免因并行而导致数据竞争等问题的场景。
  4. ScheduledThreadPool(定时器线程池):

    • Executors.newScheduledThreadPool(int corePoolSize) 工厂方法创建。
    • 除了具备基本的线程池功能外,还支持延时任务和周期性任务的执行。
    • 扩展自 ThreadPoolExecutor,实现了 ScheduledExecutorService 接口。
    • 可以用来安排任务在未来某个时间点执行一次,或者定期重复执行。

这些线程池都是通过 java.util.concurrent.Executors 类中的静态工厂方法创建的,它们内部均基于 ThreadPoolExecutor 类实现,只是预设了不同的配置参数。如果你需要更细粒度的控制,可以直接使用 ThreadPoolExecutor 构造函数来创建自定义线程池,指定核心线程数、最大线程数、线程存活时间、工作队列类型、线程工厂以及拒绝策略等参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

fpl1116

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

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

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

打赏作者

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

抵扣说明:

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

余额充值