面试官提了个这样的问题,我蒙了。搞不懂这题的考点(知识点)是什么?求助各位大佬。。
我也觉得是类似预热
的意思。
线程池在核心线程池内线程数未达到设定最大值时,可以视为这个线程池并未完全初始化完成。这个线程池的设计者应该是考虑过是否需要在线程池被创建出来时就将所有核心线程全部创建出来,但是考虑到如果给定的核心线程数太多,全部初始化的开销太大,程序可能会卡在这一步好久。于是想出了这个解决方案:当核心线程池中线程个数未达到上限时,每当来一个任务时,再去创建一个新线程并且执行这个任务,直到到达上限。此时,线程池才能算是真正初始化完毕。
这样的好处应该是,把创建线程的开销平均到刚开始的每次执行任务中去,这样对系统的性能影响可以降低到最小。
3 回答2.7k 阅读✓ 已解决
3 回答4.2k 阅读✓ 已解决
8 回答3.8k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
4 回答1.9k 阅读
@代码宇宙 提到的
预热
是一方面,另外复用之前创建的线程
本身是有锁开销的,而核心线程数应该是你根据实际情况配置好的一个最优值,在到达这个最优值前尽量避免用锁,有助于提升性能。