java线程池

四种常见内置线程池:

1. 缓存池

  • newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程若无可回收,则新建线程

2. 定长池

  • newFixedThreadPool可以创建一个定长的线程池定长线程池最多只能同时执行一定个数的线程,这个容量在new的时候设定。

3. 定时池

  • newScheduledThreadPool创建一个定时线程池支持延迟执行和周期性任务执行。后一种执行方式类似于单片机的定时器中断。

4. 单线程线程池

  • newSingleThreadExecutor创建一个单线程化的线程池,这个线程池当前池中的线程死后(或发生异常时),才能重新启动新的一个线程来替代原来的线程继续执行下去。也就是说按照单线程的模式,会按照线程添加的顺序,一个一个的执行这些线程的工作。

线程池考点:三大方法、7大参数、4种拒绝策略

池化技术:事先准备好资源,有人要用就来我这拿,用完之后还给我

默认大小:2

max

线程池的好处:

1、降低资源消耗

2、提高响应效率

3、方便管理线程

线程服用、可以控制并发数

理解:(线程池有核心线程数、最大线程数、和阻塞队列构成)

            1、当线程需求小于核心线程数+阻塞队列大小时,只会有核心线程开

            2、当线程需求介于最大线程数+阻塞队列大小时,会逐步开启所有线程

            3、当线程需求大于最大线程数+阻塞队列大小时,会执行拒绝策略

   线程安排优先级:核心线程数>阻塞队列>最大线程数

三大方法:

七大参数:

1.corePoolSize:线程池中的常驻核心线程数
2.maxinumPoolSize:线程池中能够容纳同时执行的最大线程数,此值必须大于等于一
3.keepAliveTime:多余的空闲线程的存活时间。
当前线程池数量超过corePoolSize时,当空闲时间达到keepAliveTime时,多余空闲线程会被销毁直到只剩下corePoolSize个线程为止。
4.unit:keepAliveTime的单位
5.workQueue:任务队列,被提交但是尚未被执行的任务。
6.threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程一般用默认的即可。
7.handler:拒绝策略,表示当队列满了并且工作线程-大于等于线程池的数量最大线程数(maxinumPoolSize)时如何来拒绝请求执行的runnable的策略。

所以一般实际运用中药用源码的方式去自定义线程池 

四种拒绝策略

最大线程数如何设置?

分为CPU密集型和IO密集型

CPU密集型:设置CPU核数为最大线程数   N+1

IO密集型:程序有15个大型任务,IO特别占用资源,一般设置为大型任务数的二倍  2N

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

智博的自留地

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

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

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

打赏作者

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

抵扣说明:

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

余额充值