遇到的坑-1--newFixedThreadPool 这种固定线程数量的线程池,不会回收线程资源

场景:比如固定设置1个线程,有10个线程提交。a先执行完,9个等待的线程抢到a的资源后,不会再重开一个线程,会重新走一遍run方法。

newFixedThreadPool 这种固定线程数量的线程池,不会回收线程资源,如果执行中的任务完成,排队的任务会进来继续利用空闲的线程资源,线程名称等一切依然是原来那个线程的。所以不会再调一次new Thread方法。直接重走一遍原来的那个thread的run实现(划重点,不重新分配资源,但会从runt方法重新执行)

解决方法:

run的实现类的子方法里面,通过对BlockingQueue的管理来获得前期放入的线程名称。

发布了39 篇原创文章 · 获赞 0 · 访问量 791

猜你喜欢

转载自blog.csdn.net/qq_15458763/article/details/103645245