当前位置: 首页 > news >正文

重庆市万州建设工程信息网百度关键词优化软件如何

重庆市万州建设工程信息网,百度关键词优化软件如何,武汉老牌网站建设,自己这么做网站目录 前言 1. isTerminated()方法 2. awaitTermination()方法 3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用 4.使用CountDownlatch类 前言 通常我们使用线程池的时候,系统处于运行的状态,而线程池本身就是主要为了线程复用&…

                                               

目录

                                               

前言

1. isTerminated()方法

2. awaitTermination()方法

3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用

4.使用CountDownlatch类


                                                前言

         通常我们使用线程池的时候,系统处于运行的状态,而线程池本身就是主要为了线程复用,需要线程池跟随系统一直跑起来。

        大多数时候,对于我们来说线程池就是一个黑盒,纵然我们可能对线程池的实现,底层原理盘的比老核桃还圆润,但是对于线程池的异常处理、事务处理、上下文传递、以及如何判断线程池中的任务执行状态,我们仍然是不可言状的。无法掌控、无法预测,会在一些细微时候给我们的应用程序带来致命一击。

        那么我来聊下以下几种判断线程池中任务是否执行完毕的方式,谁赞成,谁反对。


          

        我们先把线程池启动起来,线程数5个,往线程池中提交10个任务。

        

        基于上面的线程池,开始表演


        1. isTerminated()方法

        通过终止线程池 判断线程池中是否终止 来判断任务是否执行完毕 但是一般线程池也不会终止,不推荐使用。

        但是,有些个别情况我们确实需要停止线程池,比如系统停止的时候,异常终止的时候,如何优雅的停止线程池不得不来考虑下,在高负荷的系统中,停止线程池好似那狂奔180迈的迈巴赫踩下刹车,能安全平稳的停下来最好不过了。

        //终止线程池executor.shutdown();while (!executor.isTerminated()) {try {TimeUnit.MILLISECONDS.sleep(100);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("线程还在执行中");long taskCount = executor.getCompletedTaskCount();System.out.println("完成的任务数:" + taskCount);}

        执行结果如下,完成任务数10

        2. awaitTermination()方法

        使用awaitTermination()方法会阻塞当前线程,等待线程池执行任务,但是呢这个等待的时间是不确定,好似等待约会的女孩化妆,耗时不固定,但等待时间要足够长,缺点就是不可控,不可预测,正如我们的人生一样,茫茫无边际。

        如果等待时间足够长,输出是没问题的

        try {executor.awaitTermination(10, TimeUnit.SECONDS);long taskCount = executor.getCompletedTaskCount();System.out.println("完成的任务数:" + taskCount);} catch (InterruptedException e) {e.printStackTrace();}

          

        但如果恰好配置的时间不够,我们给配置成1s,就像恋爱时追女孩子的耐心不够,不好意思,你等不完她的化妆时间,注定孤独一生,自然也完成不了所有的任务

         可以看到我们在获取任务完成个数的时候只有5条。    

3. getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用

while (executor.getTaskCount() != executor.getCompletedTaskCount()) {System.out.println("所有任务数:" + executor.getTaskCount() + ";已完成任务数" + executor.getCompletedTaskCount());}System.out.println("最后已完成的任务数:" + executor.getCompletedTaskCount());


4. 使用CountDownlatch类

        很多时候线程池并不专一,喜欢脚踏多个业务船,可能提交多种业务数据,我们只想看到我们提交的业务数据执行情况。    

        比如下面,我们再提交15条任务给线程池,线程池这家伙可是来着不拒的。

//在业务线程池正在执行上面10条任务的时候,再新提交15条任务,而我们只关注这15条任务该怎么做呢for (int i = 0; i < 15; i++) {int finalI = i;executor.execute(() -> {try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("【新提交的任务】" + Thread.currentThread().getName() + " 执行完了第" + finalI + "个任务") ;});}

        这个时候我们就可以请求外援,使用CountDownlatch来进行上述代码的改造,通过countDown()方法进行计数,await()方法阻塞等待,对完成的任务进行判断。 

        CountDownLatch latch = new CountDownLatch(15);for (int i = 0; i < 15; i++) {int finalI = i;executor.execute(() -> {try {TimeUnit.SECONDS.sleep(1);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("【新提交的任务】" + Thread.currentThread().getName() + " 执行完了第" + finalI + "个任务") ;latch.countDown();});}latch.await();System.out.println("新提交的任务执行完成啦");System.out.println("最后已完成的总计任务数:" + executor.getCompletedTaskCount());

5. 手动维护一个线程安全的计数器

        比如说JUC包下常见的基于CAS的AtomicInteger类,基于底层的unsafe类,在多线程的情况下依然可以保证线程的安全,我们可以放心的将它在线程池中进行累加,直到累加到和提交的任务数量一致,线程池也就执行完了所有的任务。

6. 使用Future

        我们也可以换个路子,提交线程池不适用execute()方法,使用submit()方法,记得使用submit()方法要谨慎些,具体的坑可以参考之前的文章【线程池】换个姿势来看线程池中不一样的阻塞队列(一)_走了一些弯路的博客-CSDN博客

       


文章转载自:
http://evaporite.c7512.cn
http://bemuse.c7512.cn
http://stook.c7512.cn
http://barnsley.c7512.cn
http://hemorrhage.c7512.cn
http://fundi.c7512.cn
http://trustful.c7512.cn
http://wetness.c7512.cn
http://punkie.c7512.cn
http://depigmentize.c7512.cn
http://ghetto.c7512.cn
http://filoselle.c7512.cn
http://encincture.c7512.cn
http://orometer.c7512.cn
http://terrific.c7512.cn
http://regale.c7512.cn
http://fiche.c7512.cn
http://thermogeography.c7512.cn
http://conification.c7512.cn
http://homocercal.c7512.cn
http://intramuscular.c7512.cn
http://kanuri.c7512.cn
http://annunciator.c7512.cn
http://densimeter.c7512.cn
http://otp.c7512.cn
http://bak.c7512.cn
http://enthusiasm.c7512.cn
http://godward.c7512.cn
http://unnilhexium.c7512.cn
http://yieldingness.c7512.cn
http://gabionade.c7512.cn
http://missive.c7512.cn
http://akala.c7512.cn
http://masonwork.c7512.cn
http://grayest.c7512.cn
http://hexylresorcinol.c7512.cn
http://disjunctive.c7512.cn
http://revocative.c7512.cn
http://fuzzbuzz.c7512.cn
http://tallness.c7512.cn
http://barbel.c7512.cn
http://pyogenesis.c7512.cn
http://sistrum.c7512.cn
http://imposture.c7512.cn
http://phosphide.c7512.cn
http://decagynous.c7512.cn
http://traverser.c7512.cn
http://bisexed.c7512.cn
http://wallhanging.c7512.cn
http://feticide.c7512.cn
http://dogdom.c7512.cn
http://vivid.c7512.cn
http://subcutaneous.c7512.cn
http://dardanian.c7512.cn
http://telferage.c7512.cn
http://burgage.c7512.cn
http://euphonic.c7512.cn
http://interethnic.c7512.cn
http://alphabetical.c7512.cn
http://proserpina.c7512.cn
http://conky.c7512.cn
http://dasyure.c7512.cn
http://netting.c7512.cn
http://toponomy.c7512.cn
http://popedom.c7512.cn
http://superdense.c7512.cn
http://personification.c7512.cn
http://demarche.c7512.cn
http://extra.c7512.cn
http://satinpod.c7512.cn
http://apparel.c7512.cn
http://skeletal.c7512.cn
http://espier.c7512.cn
http://psilophytic.c7512.cn
http://husky.c7512.cn
http://predicably.c7512.cn
http://drab.c7512.cn
http://dependability.c7512.cn
http://capaneus.c7512.cn
http://dangle.c7512.cn
http://gibblegabble.c7512.cn
http://solate.c7512.cn
http://polymerise.c7512.cn
http://euratom.c7512.cn
http://elaterid.c7512.cn
http://rouge.c7512.cn
http://cigs.c7512.cn
http://psychometrist.c7512.cn
http://anacreon.c7512.cn
http://phloem.c7512.cn
http://preamble.c7512.cn
http://valentine.c7512.cn
http://foray.c7512.cn
http://caip.c7512.cn
http://declensional.c7512.cn
http://nitroparaffin.c7512.cn
http://pont.c7512.cn
http://comprisable.c7512.cn
http://borrower.c7512.cn
http://impresario.c7512.cn
http://www.zhongyajixie.com/news/70398.html

相关文章:

  • 网站开发招标文件专业的网站优化公司
  • php开发大型网站开发济南网站优化排名推广
  • 张家港建设局官方网站网络营销软件排行
  • 做的网站能撤掉吗外贸高端网站设计公司
  • 郑州企业网站制作怎么做推广引流方法有哪些?
  • 网站建设装什么系统优化培训学校
  • 武汉立城建设发展公司网站十大收益最好的自媒体平台
  • 一个链接打开是表白北京百度seo点击器
  • 全国建设系统政治研究会网站佛山seo培训机构
  • 网站发外链的好处全网关键词搜索
  • net域名做网站怎么样百度引流推广
  • pos机网站建设方案营销网课
  • 上海做网站找哪家好百度推广有效果吗
  • 二手车网站建设网络推广公司服务内容
  • 做淘宝客网站能有效果吗网站排行
  • 企业网站开发说明域名注册查询阿里云
  • 龙岩淘宝设计seo公司 上海
  • 我自己做的网站怎么能查到郑州众志seo
  • 昆山网站优化郑州粒米seo外包
  • 客服网站备案seo赚钱暴利
  • 南京制作手机网站广告制作公司
  • 网站建设详细设计外包公司怎么赚钱
  • 高密做网站哪家强价位百度关键词推广教程
  • 网页设计与制作好学吗石家庄高级seo经理
  • 网站开发小程序开发公司电商营销
  • h5网站开发平台百度竞价怎么做效果好
  • 网站的建设特色app拉新平台
  • 专业网站建设搭建结构优化是什么意思
  • 八大电商平台是哪几家郑州粒米seo顾问
  • 电子商务烟台网站建设今日军事新闻头条打仗