CyclicBarrier让多线程齐步走
从JDK 1.5之后,在java.util.concurrent包下引入了好多的处理多线程的工具类,本文首先会介绍CyclicBarrier辅助工具类,其次将用CyclicBarrier工具类来完成一个实例,最后将给出CyclicBarrier和CountDownLatch的几点比较。 之前关于CountDownLatch的博文,请参考 使用CountDownLatch协调子线程 以前在<<编写高质量代码-改善Java程序的151个建议>>一书中看到有一节的标题是“ CyclicBarrier让多线程齐步走 ”,觉得这标题挺不错的,所以在写这篇博文的时候也采用了这个名字。 CyclicBarrier工具类介绍 CyclicBarrier描述 CyclicBarrier 是一个同步辅助工具类, 它允许一组线程相互等待,直到到达一个公共的栏栅点。 CyclicBarrier对于那些包含一组固定大小线程,并且这些线程必须不时地相互等待的程序非常有用 。之所以将其称之为循环的Barrier是因为该Barrier在等待的线程释放之后可以重用。 CyclicBarrier 支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。