练习题之CyclicBarrier与CountDownLatch
一、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的更多相关文章
- CyclicBarrier和CountDownLatch的差别
CyclicBarrier和CountDownLatch都用多个线程之间的同步,共同点:同时有N个线程在 CyclicBarrier(CountDownLatch) 等待上等待时,CyclicBarr ...
- Java并发之CyclicBarrier、CountDownLatch、Phaser
在Java多线程编程中,经常会需要我们控制并发流程,等其他线程执行完毕,或者分阶段执行.Java在1.5的juc中引入了CountDownLatch和CyclicBarrier,1.7中又引入了Pha ...
- 《java.util.concurrent 包源码阅读》21 CyclicBarrier和CountDownLatch
CyclicBarrier是一个用于线程同步的辅助类,它允许一组线程等待彼此,直到所有线程都到达集合点,然后执行某个设定的任务. 现实中有个很好的例子来形容:几个人约定了某个地方集中,然后一起出发去旅 ...
- 使用数据库乐观锁解决高并发秒杀问题,以及如何模拟高并发的场景,CyclicBarrier和CountDownLatch类的用法
数据库:mysql 数据库的乐观锁:一般通过数据表加version来实现,相对于悲观锁的话,更能省数据库性能,废话不多说,直接看代码 第一步: 建立数据库表: CREATE TABLE `skill_ ...
- JAVA多线程提高十:同步工具CyclicBarrier与CountDownLatch
今天继续学习其它的同步工具:CyclicBarrier与CountDownLatch 一.CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ...
- java多线程开发之CyclicBarrier,CountDownLatch
最近研究了一个别人的源码,其中用到多个线程并行操作一个文件,并且在所有线程全部结束后才进行主线程后面的处理. 其用到java.util.concurrent.CyclicBarrier 这个类. Cy ...
- JDK源码分析之concurrent包(四) -- CyclicBarrier与CountDownLatch
上一篇我们主要通过ExecutorCompletionService与FutureTask类的源码,对Future模型体系的原理做了了解,本篇开始解读concurrent包中的工具类的源码.首先来看两 ...
- CyclicBarrier及CountDownLatch的使用
CountDownLatch位于java.util.concurrent包下,是JDK1.5的并发包下的新特性. 首先根据Oracle的官方文档看看CountDownLatch的定义: A synch ...
- Android进阶——多线程系列之Semaphore、CyclicBarrier、CountDownLatch
今天向大家介绍的是多线程开发中的一些辅助类,他们的作用无非就是帮助我们让多个线程按照我们想要的执行顺序来执行.如果我们按照文字来理解Semaphore.CyclicBarrier.CountDownL ...
随机推荐
- unix 文件属性
在unix下提到文件属性,不得不提的一个结构就是stat,stat结构一般定义如下: struct stat { dev_t st_dev; /* ID of device containing fi ...
- 神经网络的学习 Neural Networks learing
1.一些基本符号 2.COST函数 ================Backpropagation Algorithm============= 1.要计算的东西 2.向前传递向量图,但为了计算上图的 ...
- php 仿百度文库
http://www.haosblog.com/?mod=article_read&id=386
- MATLAB中的max函数的用法及含义
当A是一个列向量时候,返回一个最大值,在此不在赘述. 当Amxn是一个矩阵的时候,有以下几种情况: ① C = max(max(A)),返回矩阵最大值 ② D = max(A,[],1),返回 ...
- ubuntu无法进入和引导顺序问题解决
今天上班过来发现ubuntu无法进入,因为里面有N多资料没有备份,当时很是捉急.不过后来都解决了: 背景: easyBCD安装ubuntu14.07和windows7双系统.基本上这一年多一直用ubu ...
- nyoj 60 谁获得了最高奖学金
谁获得了最高奖学金 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: ...
- kvo原理概述
kvo概述 kvo,全称Key-Value Observing,它提供了一种方法,当对象某个属性发生改变时,允许监听该属性值变化的对象可以接受到通知,然后通过kvo的方法响应一些操作. kvo实现原理 ...
- 转载 ASP.NET常用的正则表达式
转载原地址: http://www.cnblogs.com/0001/archive/2010/01/26/1656677.html 常用表达式: "^\d+$" //非负整数(正 ...
- prestashop二次开发 笔记(支付插件)
//主函数 public function __construct() { $this->name = 'CilPay'; //模块名称 $this->display ...
- CentOS下用Tomcat+Zookeeper+Nginx+Solr完美搭建SolrCloud平台(五)
六.修改 /etc/rc.d/rc.local 文件,设置开机自启动 1.nginx 主机的设置 [root@nginx 桌面]# vi /etc/rc.d/rc.local #!/bin/sh to ...