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

网站建设制作软件扁平风格网站 模板

网站建设制作软件,扁平风格网站 模板,手机app页面设计,wordpress重新安装如何做目录 前言 1. isTerminated()方法 2. awaitTermination()方法 3.getTaskCount()方法和executor.getCompletedTaskCount()方法结合使用 4.使用CountDownlatch类 前言 通常我们使用线程池的时候#xff0c;系统处于运行的状态#xff0c;而线程池本身就是主要为了线程复用系统处于运行的状态而线程池本身就是主要为了线程复用需要线程池跟随系统一直跑起来。 大多数时候对于我们来说线程池就是一个黑盒纵然我们可能对线程池的实现底层原理盘的比老核桃还圆润但是对于线程池的异常处理、事务处理、上下文传递、以及如何判断线程池中的任务执行状态我们仍然是不可言状的。无法掌控、无法预测会在一些细微时候给我们的应用程序带来致命一击。 那么我来聊下以下几种判断线程池中任务是否执行完毕的方式谁赞成谁反对。 我们先把线程池启动起来线程数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://www.hkea.cn/news/14412113/

相关文章:

  • 比较网站建设专业做物业网站的公司
  • 网站登录入口大全58招聘网站官网
  • 优秀专题网站企业做网站需要注意事项
  • 黑龙江省建设厅网站站长石河子做网站的公司
  • 黑龙江省建设银行网站网站建优化
  • 来源门户网站源码wordpress制作单页网站导航页面
  • 做网站要花钱吗青岛建站价格
  • 建c2c网站网站建设设计公
  • 自微网站windows优化大师绿色版
  • wordpress地址站点地址企业网站模块种类
  • 信用卡在哪些网站上做推广哔哩哔哩官方网站首页
  • 商务网站开发流程甘肃省建设厅查询网站
  • 免费的网站推广 外贸黄骅怎么样
  • php做的知名网站西安网站建设公司哪有
  • 网站页面设计大小黑龙江华龙建设集团网站
  • 电子商务网站建设建设目的wordpress分页条目
  • 深圳网站建设推进商城网站建设目的
  • 南京在线网站制作加强网站信息建设管理
  • 网站设计案例方案成都网站建设的定位
  • 网站欣赏 公司网站案例上海开发小程序和app的公司
  • 怎么从网站知道谁做的做图片可以卖给那些网站
  • 网站备案有什么好处理网站建设挣钱的需要什么
  • 帝国cms网站建设上海市中小企业服务云
  • 湛江哪个论坛人气多湖南网站建设方案优化
  • 绿色环保材料网站模板品牌vi设计费用
  • 长沙网站建设开发店铺装修风格有哪些
  • 手机响应式网站开发下载免费软件哪个网站好
  • 怎么制作网站模板中国广东网站建设
  • 网站建设技术的发展找装修工人的平台或app
  • 浙江建设监理协会网站dedecms做国外网站