《并发编程》--14.Java线程池和自定义线程

线程池通过避免频繁创建和销毁线程,减轻CPU负担。newFixedThreadPool创建固定数量的线程,新任务会在空闲线程中执行或等待。所有线程池底层基于ThreadPoolExecutor,自定义线程池需关注corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue和ThreadFactory等参数,拒绝策略在任务过多时发挥作用。
摘要由CSDN通过智能技术生成

为了避免频繁的创建和销毁线程,减少CPU的压力,线程池就应运而生。

newFixedThreadPool()方法:该方法返回一个只有一个线程的线程池,该线程池的数量是固定始终不变。当有新任务提交时,线程池中若有空闲线程,将会立即执行。若么有空闲线程,则会被暂存在任务队列中,待有空闲线程时,才能处理任务队列的任务。


newSingleThreadExecutor()方法:该方法返回一个只有一个线程的线程池。若多余一个任务提交到线程池,会被暂存在任务队列中,待这个空闲线程时,才能处理任务队列的任务。

newCachedThreadPool()方法:该方法返回一个可以根据实际情况调整线程数据的线程池,线程池的线程数量不固定,但若有空闲线程可以复用,会优先使用可以复用的线程。若所有线程都在工作,就会创建新的线程处理任务。所有线程在当前任务中处理完毕后,将返回线程池进行复用

newSingleThreadExecutor()方法,该方法创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

newScheduledThreadPool()方法:创建一个定长线程池,支持定时及周期性任务执行。

刨根问底

无论使用哪个线程池,返回的结果不一样。但是在jdk底层都是继承了ThreadPoolExecutor。下面给出3几个线程的实现方法。jdk源码可查

 public static Exe
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值