一、CyclicBarrier使用

new Thread().start();

new Thread(new Runnable() {},"XXX").start();

public class CyclicBarrierTest {

  public static int NUM=;

  public static void main(String[] args) {
CyclicBarrier cyc = new CyclicBarrier();
for(int i=;i<NUM;i++) {
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName() +":before CyclicBarrier");
cyc.await();
System.out.println(Thread.currentThread().getName() +":over CyclicBarrier");
}
},Thread.currentThread().getname()).start();
}
System.out.println("Test");
}
}

输出结果如下:

main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
main:before CyclicBarrier
Test
main:before CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier
main:over CyclicBarrier

二、CountDownLatch使用

public class CountDownTest {
public static int NUM=; public static void main(String[] args) {
CountDownLatch latch = new CountDownLatch(NUM);
for(int i =;i<NUM;i++) {
new Thread(new Runnable() {
public void run() {
System.out.println(Thread.currentThread.getName() + "Before CountDownLatch");
latch.countDown();
System.out.println(Thread.currentThread.getName() + "Over CountDownLatch"); }
},Thread.currentThread.geName()).start();
}
latch.await();
System.out.println("Test");
}
}

输出结果如下:

main:Before CountDownLatch
main:Before CountDownLatch
main:Over CountDownLatch
main:Before CountDownLatch
...
Test

练习题之CyclicBarrier与CountDownLatch的更多相关文章

  1. CyclicBarrier和CountDownLatch的差别

    CyclicBarrier和CountDownLatch都用多个线程之间的同步,共同点:同时有N个线程在 CyclicBarrier(CountDownLatch) 等待上等待时,CyclicBarr ...

  2. Java并发之CyclicBarrier、CountDownLatch、Phaser

    在Java多线程编程中,经常会需要我们控制并发流程,等其他线程执行完毕,或者分阶段执行.Java在1.5的juc中引入了CountDownLatch和CyclicBarrier,1.7中又引入了Pha ...

  3. 《java.util.concurrent 包源码阅读》21 CyclicBarrier和CountDownLatch

    CyclicBarrier是一个用于线程同步的辅助类,它允许一组线程等待彼此,直到所有线程都到达集合点,然后执行某个设定的任务. 现实中有个很好的例子来形容:几个人约定了某个地方集中,然后一起出发去旅 ...

  4. 使用数据库乐观锁解决高并发秒杀问题,以及如何模拟高并发的场景,CyclicBarrier和CountDownLatch类的用法

    数据库:mysql 数据库的乐观锁:一般通过数据表加version来实现,相对于悲观锁的话,更能省数据库性能,废话不多说,直接看代码 第一步: 建立数据库表: CREATE TABLE `skill_ ...

  5. JAVA多线程提高十:同步工具CyclicBarrier与CountDownLatch

    今天继续学习其它的同步工具:CyclicBarrier与CountDownLatch 一.CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ...

  6. java多线程开发之CyclicBarrier,CountDownLatch

    最近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理. 其用到java.util.concurrent.CyclicBarrier 这个类. Cy ...

  7. JDK源码分析之concurrent包(四) -- CyclicBarrier与CountDownLatch

    上一篇我们主要通过ExecutorCompletionService与FutureTask类的源码,对Future模型体系的原理做了了解,本篇开始解读concurrent包中的工具类的源码.首先来看两 ...

  8. CyclicBarrier及CountDownLatch的使用

    CountDownLatch位于java.util.concurrent包下,是JDK1.5的并发包下的新特性. 首先根据Oracle的官方文档看看CountDownLatch的定义: A synch ...

  9. Android进阶——多线程系列之Semaphore、CyclicBarrier、CountDownLatch

    今天向大家介绍的是多线程开发中的一些辅助类,他们的作用无非就是帮助我们让多个线程按照我们想要的执行顺序来执行.如果我们按照文字来理解Semaphore.CyclicBarrier.CountDownL ...

随机推荐

  1. 【译】 AWK教程指南 附录B-Actions

    Actions 是由下列指令(statement)所组成: 表达式 ( 函数调用,赋值...) print 表达式列表 printf( 格式化字符串, 表达式列表) if( 表达式 ) 语句 [els ...

  2. 你真的知道HTML吗?

    经过几次面试当中,被问及到最基础的东西,没想到回答不上来,有点蛋痛,今天特地的复习了一下!! 内容: 1.Doctype(文档类型)的作用是什么?有多少文档类型? 2.浏览器标准模式和怪异模式之间的区 ...

  3. 创建本地CM 离线服务器

    一.包管理工具及CentOS的yum 1.包管理工具如何发现可以用的包 包管理工具依赖一系列软件源,工具下载源的信息存储在配置文件中,其位置随某包管理工具不同而变化 使用yum的RedHat/Cent ...

  4. 在windows2012&2008中设置防火墙允许filezilla的passive模式

    添加入战规则, 允许程序和服务 "filezilla" 被连接 只允许21端口通过防火墙是不够的.

  5. 【转】#include_next <filename.h>

    转载自 http://bbs.csdn.net/topics/390381450 #include_next仅用于特殊的场合. 它被用于头文件中(#include既可用于头文件中, 又可用于.c文件中 ...

  6. BroadcastReceiver学习笔记

    1.在代码中注册与在AndroiManifest.xml注册的区别 (a)在代码中注册可以控制注册与注销的时间.比如在onCreate-onDestory, onStart-onStop, onRes ...

  7. 问题-WIN7 ..\Bin\InitCC32.exe".进程无法访问(拒绝访问)

    问题现象: 问题原因:是InitCC32.exe没有权限. 问题处理:在DELPHI7的安装目录里设置用户权限,加入EVE... 这个用户.

  8. python 偏函数

    functools.partial可以设置默认参数和关键字参数的默认值 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function).要注意,这里的 ...

  9. 博客搬家啦。请访问我的新底盘www.boyipark.com

    博客搬家啦.请访问我的新底盘 www.boyipark.com

  10. HTML5要点(四)对象全整理

    最近在自学H5,一下整理出来一些主要用到的知识点 1.JavaScript 对象 JS Array JS Boolean JS Date JS Math JS Number JS String JS ...