1、线程池执行流程和实现原理
1个回答
展开全部
线程池主要是依靠队列进行任务执行,循环加队列阻塞来保持线程存活
4.2 timed为true,队列空了,执行poll超时,会返回null
4.3 若r == null,则此处timedOut的值被设置为true
4.4 在下一次循环中timed && timedOut都是true并且 workQueue.isEmpty()是空的。那就会返回null
4.5 getTask返回null,当前worker就会执行结束,进行销毁
线程池在不同CPU下,线程池线程数的配置方法
CPU密集型:核心线程数=CPU核心数(或 核心线程数=CPU核心数+1)
I/O密集型:核心线程数=2*CPU核心数(或 核心线程数=CPU核心数/(1-阻塞系数))
混合型:核心线程数=(线程等待时间/线程CPU时间+1)*CPU核心数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询