您的位置:首页 > 其它

关于CyclicBarrier用法介绍

2017-12-01 16:33 495 查看
 XML Code 
1

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();

        }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: