专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

线程池异常你都了解如何处理吗?

  大家在开发的过程中是否发现,我们使用线程池的时候很少去处理运行过程中出现的错误,不处理错误这样没关系吗?不处理会不会导致线程池结束?如果需要处理错误我们应该如何进行处理呢?那么今天从以下几个方面来看一下
  1。线程池异常
  通过代码来演示三种异常线程池的情况。1。1Runable执行异常(业务异常)
  测试代码:publicclassThreadPoolExceptionTest{publicstaticvoidmain(String〔〕args){ExecutorServiceexecutorServiceExecutors。newFixedThreadPool(2,newThreadFactory(){AtomicIntegerintegernewAtomicInteger(1);OverridepublicThreadnewThread(Runnabler){returnnewThread(r,mxsminteger。getAndIncrement());}});executorService。execute((){System。out。println(1);inti10;System。out。println(i);});executorService。execute((){for(;;){try{TimeUnit。SECONDS。sleep(1);System。out。println(Thread。currentThread()。getName()当前时间:System。currentTimeMillis());}catch(InterruptedExceptione){e。printStackTrace();}}});System。out。println(主线程执行完成);}}
  运行程序观察测试结果:
  结论:线程池正常运行,Runable的异常不会导致线程池停止运行,其他的线程正常运行
  Tips:执行Runable发生错误的线程将会被销毁会重新建一个线程,以保证固定线程池2的数量1。2提交任务到任务队列已满异常
  测试代码:publicclassThreadPoolExceptionTest{publicstaticvoidmain(String〔〕args){ExecutorServiceexecutorServicenewThreadPoolExecutor(1,1,100,TimeUnit。SECONDS,newArrayBlockingQueue(1),newThreadFactory(){AtomicIntegerintegernewAtomicInteger(1);OverridepublicThreadnewThread(Runnabler){returnnewThread(r,mxsminteger。getAndIncrement());}});for(inti0;i3;i){finalintbi;executorService。execute((){for(;;){try{TimeUnit。SECONDS。sleep(1);System。out。println(Thread。currentThread()。getName()b当前时间:System。currentTimeMillis());}catch(InterruptedExceptione){e。printStackTrace();}}});}System。out。println(主线程结束);}}
  运行程序观察测试结果:
  结论:线程池使用默认的拒绝策略的时候,当线程池提交任务到任务队列已满线程池会直接抛出错误,进而影响到主线程的后续的运行如果没有在主线程中进行错误处理(没有打印主线程结束)
  Tips:提交任务到任务队列已满异常影响的范围和方式由拒绝策略决定1。3线程池本身异常
  这里说的线程池本身异常包括但不仅限于在设置线程池大小的时候,可能不停的新建线程导致线程消耗完成了服务器的所有资源
  测试代码:authormxsmdate20222122:49Since1。0。0设置内存大小Xmx2mXms2mpublicclassThreadPoolExceptionTest{publicstaticvoidmain(String〔〕args){ExecutorServiceexecutorServiceExecutors。newCachedThreadPool();finalAtomicIntegerintegernewAtomicInteger();for(inti0;i100000;i){finalintbi;executorService。submit(newRunnable(){Overridepublicvoidrun(){try{System。out。println(integer。getAndIncrement());TimeUnit。SECONDS。sleep(b);}catch(InterruptedExceptione){e。printStackTrace();}}});}System。out。println(主线程结束);}}
  运行程序观察测试结果:
  结论:线程池导致某些异常会导致线程池直接退出可能同时导致主线程或者主应用发生问题或者退出。
  Tips:这里演示的众多问题中的一个2。异常如何处理
  线程池执行任务主要是通过ThreadPoolExecutorrunWork执行的:
  如果任务Runnable执行错误线程池就会往外抛错误退出while循环处理Worker退出逻辑
  从workers集合中删除执行报错的Worker。
  Tips:如果你不停的执行Runnable错误的话,线程池的线程标号会越来越大,也就是这里这个原因。
  最终执行当前Runnable线程结束。并不会影响线程池和其他线程。2。1Runable执行异常(业务异常)处理方式
  由于Runable执行异常并不会影响到整个系统的运行,不会因为在线程池中执行任务报错导致真系统错误退出。所以线程池执行任务的异常处理方式通常有两种:直接不处理(也可以打印日志)捕获异常不让异常往外抛2。2提交任务到任务队列已满异常处理
  这个异常取决于使用的何种拒绝策略。Java内置的拒绝策略有四种:CallerRunsPolicy:在任务被拒绝添加后,会调用当前线程池的所在的线程去执行被拒绝的任务AbortPolicy:直接抛出异常DiscardPolicy:会让被线程池拒绝的任务直接抛弃,不会抛异常也不会执行。DiscardOldestPolicy:当任务呗拒绝添加时,会抛弃任务队列中最旧的任务也就是最先加入队列的,再把这个新任务添加进去。自定义策略,只要实现RejectedExecutionHandler接口
  对于提交任务到任务队列已满异常,如果不进行catch不影响整个整个系统的运行可以不进行处理,如果可能会导致系统中断。就需要对错误进行处理。2。3线程池本身导致的异常
  线程池本身导致的异常可能会导致程序的中断,如果程序必须依靠线程池才能完成对应功能,当线程池本身导致异常如上面演示的。那么是否处理异常都无关紧要。整个程序直接崩溃!但是线程池只是一个备选方案,可以将可能的异常进行捕获处理。(但是不能完全杜绝程序崩溃的问题)3。从异常看如何使用线程池线程池一定要设置最大线程数,防止不停地创建线程池消耗掉服务器所有的资源线程池的阻塞队列尽量不要设置为无界队列,原因:同样不停地添加任务可能把服务器的资源消耗完成对于可预见的异常尽量进行捕获处理
  我是蚂蚁背大象,文章对你有帮助点赞关注我,文章有不正确的地方请您斧正留言评论谢谢

李铁事件后中国U15足球赛再爆踢假球,恒大足球校长免职并开除2022世界杯刚落下帷幕,球迷们都非常希望国足能够晋级世界杯,真正地为自己的球队加油助威,而不是国外球队。可是,连这仅剩一点的希望再遭打击,先有李铁利用职务之便,带头踢假球,获取非郭艾伦上演王者归来,同曦近三节死咬不落下风,发生了什么?对阵四川的比赛,郭艾伦小试牛刀,砍下21分,二分球9中1,三分球5中1,还有4助攻。本场比赛半场就已经拿到19分,12中8,2次助攻,效率奇高,特别是第二节单节砍下14分,面对皮特打球巨脏的字母哥,为什么联盟还如此捧他!现在的联盟除了商业性特浓,好像没有什么可说的啦。诚然字母哥现在的个人实力是没有疑问的,但是打球不单是只要球技,而是在有球技的同时更要有球品。何谓巨星呀,不就是球技在线但球品更得到球没救了!一场比赛两次内讧!赶紧交易他吧太阳球员布里奇斯接受采访时说我已经向艾顿道歉了,是我的不对!到底咋回事呢?在太阳和奇才的比赛中,艾顿和布里奇斯因为掩护问题,在场上发生争执。这还不算完,同样是对阵奇才,艾顿在场边又DC高层变动引地震沙赞后续暂未受影响1905电影网讯随着DC高层的变动,其影响也在蔓延。大量的电影被砍,剧集被暂停制作。日前,雷霆沙赞的主演扎克瑞莱维在自己的社交网站上表示,他和他的雷霆沙赞,以及后续影片,暂未受到影曾经爱的不顾一切,如今恨得不想往来,这些明星夫妻反差太大!文坦荡半夏编辑坦荡半夏得成比目何辞死,愿作鸳鸯不羡仙在娱乐圈能看到相守一生的夫妻实在是难得,叶倩文和林子祥的神仙爱情令人羡慕,陆毅和鲍蕾从大学情侣到自己四口,两人的甜蜜指数不断攀升明明长相不出众,却非要演绝世大美女,这7位女星脑子怎么想的?文门口的呆呆编辑门口的呆呆辣目洋子要演绝世美女和赵丽颖争宠?究竟是导演无知,还是辣目洋子太过自信?满脸皱纹的杨钧钧演18岁少女,给男搭档当了一回西门大妈。如今,不管什么人都想挤进影阿凡达水之道杨紫琼有多可怜?出场打个酱油,然后没她事了相信要说这一次,在阿凡达水之道里面,谁是最大放光彩的角色,毫无疑问,不是主角萨姆沃辛顿,也不是女主角佐伊索尔达娜,而是剧中那个小男孩,也就是吉奥瓦尼瑞比西饰演的角色,而原因也很简单五部经典的惊悚片,每一部都是重口味,全都看过的是个狠人!第五部死寂豆瓣7。8主演唐尼沃尔伯格安贝瓦莱塔瑞恩柯万腾影片点评本来在网上加了网友在线观影会议一起重温的,看到放的是某鹅平台的删减版又退出了,自己找了91分43秒的(92分钟的实在没人能活着走出许凯和他粉丝的故事冬日生活打卡季许凯算准一线吗?没想到他和同公司女艺人的恋爱瓜竟然无人伤亡稍微展开讲一讲许凯的这个择偶小癖好。他好像唯爱吃窝边草,从小透明时期跟张南传绯闻,到最红那一年传白鹿,再是现从娱乐圈第一软饭男到全民姐夫,李光洁到底凭什么?前段时间的热播电视剧风吹半夏,大家都看了吗?这是一部以90年代为背景聚焦钢铁行业,主要讲述一代中小企业家们在时代的浪潮中艰难的生存和发展的群像剧。可以说,这部剧从播出开始,无论是剧
马斯克预测美国通胀将结束德国ntv。de埃隆马斯克认为创纪录的通货膨胀即将结束美国正遭受创纪录的通货膨胀,美国中央银行正在积极应对这种情况,特斯拉老板埃隆马斯克已经看到情况正在趋于正常化的迹象。根据埃隆马梦天家居董事长余静渊荣获行业优秀专家称号近日,以品质品牌绿色智能为主题的第五届中国门业创新发展论坛暨全国钢木门窗行业峰会在浙江永康国际会展中心圆满召开。家居行业是一个关乎现代人居民生的重要行业,自带天然健康环保属性。家居有没有一种可能性梦境中发生的事情,其实来自于平行宇宙?综述科学技术的发展正在带领人类走向更加广阔的世界,我们关于宇宙的认知也在慢慢增加,似乎一切关于存在的疑问都能通过人类的力量来获得解答,但事实上我们现在拥有的认知只是宇宙的冰山一角,2022年度手机满意度榜单来了,苹果依旧王者,华为OPPO稳居前四什么手机品牌最令国内顾客满意?品牌评级和品牌顾问机构chnbrand最近做的2022年中国顾客满意度指数排行榜出来了苹果毫无悬念的高居第一,而华为OPPO紧随其后位居第二第四名。仔华为Mate50Pro再次爆料,鸿蒙3。05000mAh100W,还有2K屏国内半导体发展之路任重道远,需要的是众人拾柴埋头苦干。任正非和雷军都说过,一枝独秀不是春,百花齐放春满园。华为作为国产科技行业的排头兵,在半导体领域的成就当然值得国人骄傲和尊敬,也10款好玩的Steam生存游戏节游戏盘点,克隆技术能毁灭人类作为全世界最大的游戏平台,Steam游戏平台拥有者无与伦比的号召力,这不,在最近Steam所开启的生存游戏节活动中就有不少的3A生存游戏都打了较大的折扣。今天我就来为大家推荐10款月球的归宿是什么?科学家推测,未来月球一定会回归地球发生撞击大家知道每天和我们朝夕相处的月球,它未来的归宿会是哪里吗?虽然现在月球和我们地球的距离是384000km左右,但是这个距离在未来并不是永远保持不变的。我们今天之所以要聊到月球未来的马斯克预测美国通胀将结束德国ntv。de埃隆马斯克认为创纪录的通货膨胀即将结束美国正遭受创纪录的通货膨胀,美国中央银行正在积极应对这种情况,特斯拉老板埃隆马斯克已经看到情况正在趋于正常化的迹象。根据埃隆马全球首款消费级微尺度LED3D打印机,整机高仅175mm近日,专注于桌面级光固化3D打印技术的创新企业纵维立方携MicroLED微显示器优秀制造商JBD(上海显耀显示科技有限公司)共同开发全球首款消费级MicroLED3D打印机。首款M小米MIUI14升级支持机型曝光,多达上百款,你的手机支持吗?智能手机可以通过升级更新系统来获得最新的功能跟体验,有智能手机用户表示升级更新系统就像是换了一个新手机,大家会不会在智能手机操作系统新版本推送之后第一时间进行升级。随着安卓13系统华为鸿蒙OS3。0来了!首批尝鲜机型名单公布日前,华为公布了鸿蒙OS3。0首批Beta尝鲜机型清单,其中包括了华为P50系列华为Mate40系列华为智慧屏V系列,以及华为MatePad系列,共计14款机型。据悉,鸿蒙OS3。
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网