java线程池的任务处理策略

Java线程池详解
本文详细介绍了Java线程池中的核心类ThreadPoolExecutor及其工作原理。包括线程池的构造参数解释、任务分配策略以及线程池的关闭方法。有助于理解线程池如何高效管理线程资源。

首先,java线程池的一个非常重要的类,就是ThreadPoolExecutor类

新建一个线程池,代码为

ThreadPoolExecutor executor = new ThreadPoolExecutor(...);

构造函数的参数说一下

  • int corePoolSize   线程池规定线程数(不超载的情况下)
  • int maximumPoolSize  线程池最大线程数 (已经超载了,最大能力)
  • long keepAliveTimes  线程没事干时最长存活时间
  • int TimeUnit 就是上面这个参数keepAliveTimes  的单位(年、月、天、小时、分钟、秒、毫秒、微秒)
  • BlockingQueue bockingqueue  阻塞任务队列(超载情况下排队等待的任务数组)

最关键的参数就是这么几个,最基本的任务分配策略也是基于这几个参数。下面是任务分配策略

1、线程池初始默认线程数为0,当有任务来临时,创建新线程执行任务

2、当来的任务数大于线程池规定线程数(corePoolSize )时,剩下多余的任务到 阻塞任务队列(bockingqueue )中等待

3、当阻塞任务队列也满了的时候,也就是排队也没地儿排队了的时候,线程池会新建线程来执行任务

4、当线程池的线程数达到最大线程数(maximumPoolSize )时,再来任务也接不了了,会按照拒绝任务策略来处理剩下的事情。

 

keepAliveTimes  这个参数:当线程池中的线程数大于规定线程数(corePoolSize )时,而且又没啥任务,这个时候,多余的线程在 keepAliveTimes  时间后就会消亡,线程池线程数量小于 规定线程数(corePoolSize )

 

最后再说线程池的两个方法,shutdown() 和 shutdownNow()

shutdown():执行这个方法后,线程池不再接受新的任务,当执行完手里的任务(包括阻塞队列里的任务)后,线程池关闭【这个就相当于要离职了,也要处理好手里的事情

shutdownNow():执行这个方法后,线程池不再接受新的任务,并且会尝试中断手里的任务,然后线程池关闭【这个就是要离职的时候,马上什么都不干了,拍屁股走人

 

如果您觉得这篇文章帮到您,请您顺手点个赞,如果有什么错误之处,也请您一定不吝赐教,我们共同进步!

 

转载于:https://my.oschina.net/u/3410701/blog/1499417

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值