Java并发
文章平均质量分 66
Java并发
逢甘霖成大事
这个作者很懒,什么都没留下…
展开
-
饥饿的线程池
但是这样改写queue会导致一个副作用就是在offer内return false后,addWorker(command, false)时此时线程数达到了Max,那么线程池就会拒绝这个任务,所以还需要。这种线程池可以提高处理速度和效率,特别适合用在非CPU密集型的处理场景下延迟更低响应更快,提高吞吐量,而且空闲时还不占用max线程。这种线程池可以比喻成饥饿的线程池,因为不管提交多少任务,都是尽其所能的先分配线程执行,尽快消费。线程池运行的基本逻辑是C->Q->M,有没有办法把执行逻辑改成C->M->Q呢?原创 2024-09-08 22:17:29 · 187 阅读 · 0 评论 -
ThreadPoolExecutor
可以把线程池理解成一个黑心工厂,工厂老板只顾了5个核心常驻员工,当工作任务不多时让这5个员工来处理,处理不过来的任务就先堆放到仓库里面等后面有人力了慢慢处理,如果仓库也堆满了,就雇一些临时员工来帮忙处理,等任务处理完了,仓库也没有积压了就干掉临时员工,核心worker加上临时worker一共不会超过max。2、当allowCoreThreadTimeOut为false时,在ThreadPoolExecutor#getTask()中会判断线程数量大于code时才会return null去销毁线程。原创 2024-07-02 15:27:08 · 337 阅读 · 0 评论