`
lijunaccp
  • 浏览: 153159 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

CyclicBarrier关于组织旅游的例子

 
阅读更多
package com.test;

import java.util.Random;
import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class CyclicBarrierTest
{

	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		ExecutorService pool = Executors.newCachedThreadPool();
		final CyclicBarrier cb = new CyclicBarrier(3); // 3个学生

		for (int i = 0; i < 3; i++)
		{
			pool.execute(new Runnable()
			{
				public void run()
				{
					try
					{
						Thread.sleep(new Random().nextInt(10000));
						System.out.println("学生:"
								+ Thread.currentThread().getName()
								+ "到达目的地1,当前已有" + (cb.getNumberWaiting()+1) + "人"
								+ (cb.getNumberWaiting()==2?"都到达了,继续走":"等待其他人"));
						cb.await();
						Thread.sleep(new Random().nextInt(10000));
						System.out.println("学生:"
								+ Thread.currentThread().getName()
								+ "到达目的地2,当前已有" + (cb.getNumberWaiting()+1) + "人"
								+ (cb.getNumberWaiting()==2?"都到达了,继续走":"等待其他人"));
						cb.await();
						Thread.sleep(new Random().nextInt(10000));
						System.out.println("学生:"
								+ Thread.currentThread().getName()
								+ "到达目的地3,当前已有" + (cb.getNumberWaiting()+1) + "人"
								+ (cb.getNumberWaiting()==2?"都到达了,继续走":"等待其他人"));
						cb.await();
					}
					catch (Exception e)
					{
						e.printStackTrace();
					}

				}
			});
		}
		pool.shutdown();
	}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics