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();
}
}
CyclicBarrier关于组织旅游的例子
最新推荐文章于 2024-05-15 16:12:14 发布
