java线程池

参考文献

1.Java并发编程:线程池的使用
2.由浅入深理解Java线程池及线程池的如何使用

为什么需要线程池?

并发编程里,每个线程会执行一些任务。当任务处理完毕后,线程的生命周期就会结束销毁。但有一个问题就是线程频繁创建与销毁需要耗费大量的资源,如果存在可以复用线程的方法那么运行效率就会大大提升,线程池的概念就出现了。
线程池的基本概念就是创建一批线程,然后当有任务需要执行时,就取出线程然后执行任务,完成任务后就把线程放回池中,已达到复用线程的目的

ThreadPoolExecutor类

线程池最基础的类,由它为基础实现四种常见的线程池,用以适用不同的环境下使用。四种线程池的具体实现方法可参照参考文献2

newFixedThreadPool线程池

大小在初始化时固定了的线程池,在运行过程中线程池的线程数量不变。
当新任务提交时,如果有空闲线程,则会立即执行,如果没有,则会暂时存入阻塞队列。所以如果任务提交十分频繁,则可能会出现存放任务的队列迅速增大占用大量资源的问题。还有一个问题就是,即使线程池长时间空闲,它也不会主动释放线程,会持续占用资源。

newSingleThreadExecutor线程池

只有一个线程的线程池,会将阻塞的任务存到队列中然后空闲时执行。

newCachedThreadPool线程池

缓存线程池,缓存的线程默认存活60秒,初始大小corePoolSize为0,最大大小为Integer.MAX_VALUE。
使用这个线程池时,他会不断的增加新的线程去执行新的任务,当线程空闲时间超过一定时间时(默认60s),则会回收线程。

newScheduledThreadPool线程池

定时线程池,可以周期性的执行任务,比如用于周期性同步数据

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值