深入java线程池
文章平均质量分 93
笔下天地宽
能不凑合就不凑合!
展开
-
从线程池执行任务说起,看看线程池中的线程什么时候关闭
大概说下问题(类似),就是新建一个线程池,核心线程是3个,最大线程数是6个,阻塞队列是12,过期时间是20s,假设每个线程处理完一个任务需要1s。如果一次性来了18 个任务,也就是线程全开,队列塞满,那么:3s之后(也就是任务搞完了),每2s来一个任务,20s之后非核心线程会关闭么?乍一看到这个问题,我也是懵了,非核心线程不是到点了就关掉了么?哦,你任务处理完了,我还有6个线程,每2s来一个,处理一个要1s,就这事?我一个线程就能搞定啊,还要啥6个线程?非核心线程可以关了啊!还在那干啥子?浪费性能!原创 2021-04-26 17:52:49 · 2552 阅读 · 0 评论 -
聊一聊java线程池ThreadPoolExecutor(三)——线程池中是如何执行任务的?
看到这个图片没?没错,就是一辆教练车!我,一个已经工作了好几年大龄暖男,最终还是走上了学车的道路!环顾周围,同事中几乎都手持驾照了。早上挤出了一小时,练习科目二,前进,后退,前进,后退!最后小腿感觉麻木了,上班还晚了半小时。哎,终究还是承受了这个年纪不该承受的酸痛~ 悔不当初啊,大学那么闲,干啥不把驾照考了啊!由此我们可以看到,嗯,挣钱真的很重要啊!有钱了直接请个司机,它不香么?学什么车啊!言归正传,车不车的咱先不管,当然,也不能随便开车,不然博客都没法发了,嘿嘿!我们想要跟踪下线程..原创 2021-04-15 14:49:20 · 774 阅读 · 0 评论 -
聊一聊java线程池ThreadPoolExecutor(二)——线程池状态
我们知道一旦有任务来了,线程池就会分配线程去处理任务,或者把任务放到缓存队列中去。那么线程池是如何高效处理任务的呢?多个任务进入了缓存队列,多线程取任务,这又是如何处理并发问题的呢?线程都有有状态的,那么线程池有状态么?我们一点一点来看看哈。首先,说下基础的线程池状态属性。线程池状态:线程池一共有五种状态,并且对这五种状态进行了一定的封装,他们分别是:RUNNING:能接受新提交的任务,并且也能处理阻塞队列中的任务,就是在运性。 SHUTDOWN:关闭状态,不再接受新提交的任务,但却可以继续处原创 2020-12-04 11:15:43 · 373 阅读 · 0 评论 -
聊一聊java线程池ThreadPoolExecutor(一)
关于java线程池,大家手写的可能不多,使用的话一般都是直接使用封装好的,具体内部的实现可能只是简单的了解下,一来是方便使用java线程池,当然还有一个更重要的作用,嘿嘿,大家都懂的。其实理解java中一些源码的运行机制对大家的学习帮助是非常大的,一方面源码中的代码都十分精简,逻辑之间的管理很优雅,另一方面,熟悉源码之后,遇到现实生产中的问题,就很容易去关联到可能出现问题的某个节点,不然真拉出一大堆日志,然后一点点排查重试,特别是并发问题,真的能把人逼的崩溃哈。今天就来说下线程池,我们由浅入深,一点原创 2020-11-26 19:04:26 · 175 阅读 · 0 评论