三种线程池实现方式

本文介绍了Java中三种线程池实现方式:newCachedThreadPool、newFixedThreadPool和newSingleThreadPool,以及它们的特性。newCachedThreadPool在高并发下可能导致CPU使用率过高,newFixedThreadPool若任务过多可能出现内存溢出,newSingleThreadPool则保证了顺序执行。同时提到了自定义线程池的配置,包括核心线程数、最大线程数和队列类型的选择。
摘要由CSDN通过智能技术生成

三种线程池实现方式

1.newCachedThreadPool

  • 三种线程池中最快的

  • SynchronousQueue 同步队列

  • CorePoolSize 0

  • KeepAliveTime 60L

  • MaximumPoolSize 最大线程池线程个数 max

  • 执行run方法的速度大于提交任务的速度就会出现线程复用

  • 高并发下线程无限多 会造成CPU使用率百分百 影响程序流畅度

2.newFixedThreadPool

  • 三种线程池中速度中等
  • CorePoolSize n 核心线程n个
  • MaximumPoolSize n 最大线程池线程个数n
  • KeepAliveTime 0
  • LinkedBlockingQueue 工作队列无限大
  • 工作队列无限大 如果等待的任务足够多 会出现oom 内存溢出

3.newSingleThreadPool

  • 单线程线程池
  • CorePoolSize 1
  • MaximumPoolSize 1
  • LinkedBlockingQueue
  • KeepAliveTime 0

4.自定义线程

  • 自定义CorePoolSize MaximumPoolSize
  • 队列类型
  • 核心线程数CorePoolSize
  • 非核心线程数 MaximumPoolSize - CorePoolSize
  • ArrayBlockingQueue
  • 当核心线程 非核心线程 以及队列全部爆满之后 下一个任务就会被拒绝
  • 提交优先级 和 执行优先级
    • 提交优先级由大到小 核心线程 > 队列 > 非核心线程
    • 执行优先级由大到小 核心线程 > 非核心线程 > 队列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值