您好!欢迎来到爱源码

爱源码

热门搜索: 抖音快手短视频下载   

线程池重用原则 {源码交易平台}

  • 时间:2022-10-27 00:32 编辑: 来源: 阅读:285
  • 扫一扫,手机访问
摘要:线程池重用原则 {源码交易平台}
更多精彩,请关注xhJaver,微信官方账号。来自JD.COM的工程师将与您一起成长。首先,我们要弄清楚线程池的几种状态。1.运行此状态表明线程池处于正常状态,可以解决任务和接受任务。2.SHUTDOWN这个状态表示线程池处于正常的关闭状态,不再接受任务。但是它可以解决线程池中剩余的任务。3.STOP这个状态表示线程池处于挂起状态,不仅不会接收新的任务,还会中断正在进行的任务。4.整理此状态表示线程池中没有任务,所有任务都已停止。5.终止线程池被完全终止。它们的状态转换图如下:线程池state.png < fig caption style = " margin-top:5px;文本对齐:居中;颜色:# 888;font-size:14px;"& gt线程池状态;corePoolSize如果((wc & gtmaximumPoolSize ||(定时& amp& amptime dout))& amp;& amp(wc & gt1 | | work queue . isempty()){ if(compareandcrementworkercount(c))返回null继续;} try {//这里timed为真时,采用超时获取元素的方法,否则采用一直阻塞的方法。Runnable r =定时?workQueue.poll(keepAliveTime,TimeUnit。纳秒):work queue . take();//返回if (r!= null)返回r;timedOut = true} catch(interrupted exception retry){ time dout = false;}}}可以看出getTask是用超时标志计时的。我们在第一篇文章的线程池原理中说过,如果核心线程空闲了几分钟,就会被销毁,或者在这里,如果在keepAliveTime内没有拾取任务,也就是线程空闲,就退出runWorker中的while循环,销毁线程。 你确定核心不会被摧毁?我们注意到有一个allowCoreThreadTimeOut变量。如果为真,那么核心线程也是一个可析构的threadpooleuxecutor。AllowcorethReadTimeout(true);真的有核心线程和非核心线程吗?其实没什么区别。都是一样的线程。线程池的源代码中没有核心线程的标记,但是有多个核心线程。第一个线程在该数字之前创建,而线程在该数字之后创建。默认情况下,在这个数字之后创建的线程将在keepAliveTime的空闲时间被销毁。为了方便记忆,称之为非核心线程VII。总结一下大致流程。线程池源代码流chart.png如下图所示。在我们将任务提交给线程池后,线程池会将我们的任务封装到一个worker中,里面有要执行的线程T和要执行的任务。这个线程T的主要任务是t.start运行runworker方法。在runworker方法中,总是在循环中获取提交的任务。如果没有已提交的任务,则取决于队列中是否有任何任务。当你得到排队的任务时,你将判断超时标志是否为真。如果为真,如果在超时期限内没有得到任务,将返回null,然后销毁当前线程。否则,你会等到你得到任务,你不会破坏线程,从而实现线程重用。 更多精彩请关注微信官方账号xhJaver,JD.COM的工程师与你一起成长。


  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【技术支持|常见问题】1502企业站群-多域名跳转-多模板切换(2024-04-09 12:19)
【技术支持|常见问题】1126完美滑屏版视频只能显示10个(2024-03-29 13:37)
【技术支持|常见问题】响应式自适应代码(2024-03-24 14:23)
【技术支持|常见问题】1126完美滑屏版百度未授权使用地图api怎么办(2024-03-15 07:21)
【技术支持|常见问题】如何集成阿里通信短信接口(2024-02-19 21:48)
【技术支持|常见问题】算命网微信支付宝产品名称年份在哪修改?风水姻缘合婚配对_公司起名占卜八字算命算财运查吉凶源码(2024-01-07 12:27)
【域名/主机/服务器|】帝国CMS安装(2023-08-20 11:31)
【技术支持|常见问题】通过HTTPs测试Mozilla DNS {免费源码}(2022-11-04 10:37)
【技术支持|常见问题】别告诉我你没看过邰方这两则有思想的创意广告! (2022-11-04 10:37)
【技术支持|常见问题】你正确使用https了吗? [php源码](2022-11-04 10:37)

联系我们
Q Q:375457086
Q Q:526665408
电话:0755-84666665
微信:15999668636
联系客服
企业客服1 企业客服2 联系客服
86-755-84666665
手机版
手机版
扫一扫进手机版
返回顶部