关于CyclicBarrier用法介绍
来源:互联网 发布:csol刷芯片软件 编辑:程序博客网 时间:2024/06/06 06:37
XML Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.lyzx.restdy.callable;
import java.util.Random;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;
/**
* CyclicBarrier经典要的用法是
* 让一部分线程同时开始执行(当然CountDownLatch也能实现类似的功能)
* 和CountDownLatch相比CyclicBarrier可以重复使用
*
*/
public class T6 {
public static void main(String[] args) {
CyclicBarrier cb = new CyclicBarrier(3);
for(int i=0;i<100;i++){
new Thread(new O(cb,"one")).start();
new Thread(new O(cb,"two")).start();
new Thread(new O(cb,"three")).start();
System.out.println("=====================================");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("##################");
cb.reset();
new Thread(new O(cb,"007")).start();
new Thread(new O(cb,"008")).start();
new Thread(new O(cb,"009")).start();
}
}
}
class O implements Runnable{
private CyclicBarrier cb;
private String name;
private Random rand = new Random();
public O(CyclicBarrier cb,String name){
this.cb=cb;
this.name=name;
}
@Override
public void run(){
int time = rand.nextInt(2000);
try{
TimeUnit.MILLISECONDS.sleep(time);
System.out.println(this.name+" 准备好了,共睡了("+time+")毫秒");
cb.await();
System.out.println("我是["+name+"],我们一起执行任务.......");
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.util.Random;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit;
/**
* CyclicBarrier经典要的用法是
* 让一部分线程同时开始执行(当然CountDownLatch也能实现类似的功能)
* 和CountDownLatch相比CyclicBarrier可以重复使用
*
*/
public class T6 {
public static void main(String[] args) {
CyclicBarrier cb = new CyclicBarrier(3);
for(int i=0;i<100;i++){
new Thread(new O(cb,"one")).start();
new Thread(new O(cb,"two")).start();
new Thread(new O(cb,"three")).start();
System.out.println("=====================================");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("##################");
cb.reset();
new Thread(new O(cb,"007")).start();
new Thread(new O(cb,"008")).start();
new Thread(new O(cb,"009")).start();
}
}
}
class O implements Runnable{
private CyclicBarrier cb;
private String name;
private Random rand = new Random();
public O(CyclicBarrier cb,String name){
this.cb=cb;
this.name=name;
}
@Override
public void run(){
int time = rand.nextInt(2000);
try{
TimeUnit.MILLISECONDS.sleep(time);
System.out.println(this.name+" 准备好了,共睡了("+time+")毫秒");
cb.await();
System.out.println("我是["+name+"],我们一起执行任务.......");
}catch(Exception e){
e.printStackTrace();
}
}
}
阅读全文
0 0
- 关于CyclicBarrier用法介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier介绍
- CyclicBarrier用法
- CyclicBarrier用法
- CyclicBarrier用法
- Nginx基础
- android操作简单的文字标签显示
- ZooKeeper之Java客户端API使用—创建节点。
- 事件监听
- 微信数据库转子http://blog.csdn.net/qq_24531461/article/details/77624255项目在https://github.com/1998lixin/WeCh
- 关于CyclicBarrier用法介绍
- sprintf用法解析
- JS——call(简单继承)
- 鼠标各键对应的ASCII码值
- 卷1部分4-8章
- Android 编程下 Touch 事件的分发和消费机制
- Python-Plot小记
- 列表样式
- android App大小大幅度减小