A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xgm 中级黑马   /  2016-3-18 00:29  /  329 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. * 目的:了解CyclicBarrier
  2. * CyclicBarrier作用:
  3. *                 一组线程相互等待,知道都到达了某个公共屏障,继续往下走。
  4. */
  5. public class CyclicBarrierTest {

  6.         public static void main(String[] args) {
  7.                
  8.                 ExecutorService threadPool = Executors.newCachedThreadPool();
  9.                 final CyclicBarrier barrier = new CyclicBarrier(3);
  10.                
  11.                 for(int i=0;i<3;i++){
  12.                         final int n = i;
  13.                         Runnable runnable = new Runnable(){
  14.                                 public void run() {
  15.                                         try {
  16.                                                 Thread.sleep(1000*n);
  17.                                                 System.out.println(Thread.currentThread().getName()+
  18.                                                                 "到达了A地点,正坐在马路上看着短裙美女等待着其他人,"+"当前已有人数"+barrier.getNumberWaiting());
  19.                                                 barrier.await();
  20.                                                
  21.                                                 Thread.sleep(1000*n);
  22.                                                 System.out.println(Thread.currentThread().getName()+
  23.                                                                 "到达了B地点,正在咖啡厅搭讪美女等待着其他人"+"当前已有人数"+barrier.getNumberWaiting());
  24.                                                 barrier.await();

  25.                                                 Thread.sleep(1000*n);
  26.                                                 System.out.println(Thread.currentThread().getName()+
  27.                                                                 "到达了C地点,正在和刚刚搭讪到的美女电话聊着天等待着其他人"+"当前已有人数"+barrier.getNumberWaiting());
  28.                                                 barrier.await();
  29.                                         } catch (InterruptedException e) {
  30.                                                 e.printStackTrace();
  31.                                         } catch (BrokenBarrierException e) {
  32.                                                 e.printStackTrace();
  33.                                         }
  34.                                 }
  35.                         };
  36.                         threadPool.execute(runnable);
  37.                 }
  38.                 threadPool.shutdown();
  39.         }
  40. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马