资讯专栏INFORMATION COLUMN

java 并发编程实战 闭锁 (书上原文)

baukh789 / 1088人阅读

摘要:使主线程高效地等待直到所有工作线程都执行完成,因此可以统计所消耗的时间。


使主线程高效地等待直到所有工作线程都执行完成,因此可以统计所消耗的时间。

/**
 * TestHarness
 * 

* Using CountDownLatch for starting and stopping threads in timing tests * * @author Brian Goetz and Tim Peierls */ public class TestHarness { public long timeTasks(int nThreads, final Runnable task) throws InterruptedException { final CountDownLatch startGate = new CountDownLatch(1); final CountDownLatch endGate = new CountDownLatch(nThreads); for (int i = 0; i < nThreads; i++) { Thread t = new Thread() { public void run() { try { startGate.await(); try { task.run(); } finally { endGate.countDown(); } } catch (InterruptedException ignored) { } } }; t.start(); } long start = System.nanoTime(); startGate.countDown(); endGate.await(); long end = System.nanoTime(); return end - start; } }

startGate.countDown() ,准备工作完成后,使所有工作线程开始工作;

endGate.await() 使所有工作线程都执行完后,执行下面的代码。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67074.html

相关文章

  • Java并发编程笔记(二)

    摘要:本文探讨并发中的其它问题线程安全可见性活跃性等等。当闭锁到达结束状态时,门打开并允许所有线程通过。在从返回时被叫醒时,线程被放入锁池,与其他线程竞争重新获得锁。 本文探讨Java并发中的其它问题:线程安全、可见性、活跃性等等。 在行文之前,我想先推荐以下两份资料,质量很高:极客学院-Java并发编程读书笔记-《Java并发编程实战》 线程安全 《Java并发编程实战》中提到了太多的术语...

    NickZhou 评论0 收藏0
  • 用CountDownLatch提升请求处理速度

    摘要:是多线程包里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅。主线程处于状态,直到的值数减到,则主线程继续执行。此时必须使用线程池,并限定最大可处理线程数量,否则服务器不稳定性会大福提升。 countdownlatch是java多线程包concurrent里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅。今天我们...

    oujie 评论0 收藏0
  • JAVA并发编程之 - CountDownLatch使用场景分析

    摘要:今天我们来聊一聊的使用场景。使用场景在某些业务情况下,要求我们等某个条件或者任务完成后才可以继续处理后续任务。同时在线程完成时也会触发一定事件。方便业务继续向下执行。第个毒贩如果当前已经没有可以毒贩,立刻返回被干掉了干掉一个。 作者 : 毕来生微信: 878799579 前言 ​ 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器 的性能。今天...

    yy736044583 评论0 收藏0
  • java并发编程实战 Synchronized 的一点思考

    摘要:看并发编程实战第章程序清单附件时对于下面的话如何理解我的理解是方法等同于他是对上的锁,也只能保证同一时刻只有一个线程可以访问同一实例的方法。的是对进行上锁,因此任何访问的线程安全的方法,同一时刻只能有一个线程进行。 看《java 并发编程实战》 第4章 程序清单4-14附件时 class BadListHelper { public List list = Collections....

    Tonny 评论0 收藏0
  • 多线程编程完全指南

    摘要:在这个范围广大的并发技术领域当中多线程编程可以说是基础和核心,大多数抽象并发问题的构思与解决都是基于多线程模型来进行的。一般来说,多线程程序会面临三类问题正确性问题效率问题死锁问题。 多线程编程或者说范围更大的并发编程是一种非常复杂且容易出错的编程方式,但是我们为什么还要冒着风险艰辛地学习各种多线程编程技术、解决各种并发问题呢? 因为并发是整个分布式集群的基础,通过分布式集群不仅可以大...

    mengera88 评论0 收藏0

发表评论

0条评论

baukh789

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<