`
lijunaccp
  • 浏览: 163403 次
  • 性别: 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();
	}

}

分享到:
评论

相关推荐

    CyclicBarrier的用法

    在Java多线程编程中,`CyclicBarrier`是一个非常重要的同步工具类,它允许一组线程等待其他线程到达某个屏障点后再一起继续执行。这个屏障点就是我们所说的“循环栅栏”,顾名思义,它就像一个旋转门,所有线程必须...

    CountDownLatch和CyclicBarrier用法实例大全

    - 使用CyclicBarrier实现多线程分治策略,每个子任务完成后来一次全局计算的例子。 - 线程间的异常处理,包括中断和超时的处理。 - 结合Future和ExecutorService,进一步提高并发性能和灵活性。 - 在大型项目中的...

    CyclicBarrier的使用以及注意事项

    CyclicBarrier的使用以及注意事项

    java.CyclicBarrier(解决方案).md

    CyclicBarrier是Java中一个非常实用的同步辅助...通过这个例子,可以看到CyclicBarrier在解决并行任务中同步问题的实用性。同时,这也展示了当使用CyclicBarrier遇到问题时,应该如何通过异常处理来避免程序出现故障。

    Java并发系列之CyclicBarrier源码分析

    Java并发系列之CyclicBarrier源码分析 CyclicBarrier是Java并发系列...* 等待所有人到齐后开始旅游 * 等待所有运动员到齐后开始比赛 CyclicBarrier是一个非常有用的同步工具类,能够帮助我们实现多个线程的相互等待。

    JAVA CyclicBarrier类详解.docx

    下面是一个使用CyclicBarrier的典型例子,展示了一个并行分解问题的解决过程: ```java class Solver { final int N; final float[][] data; final CyclicBarrier barrier; class Worker implements Runnable...

    CyclicBarrier,reentrantlock,condition模拟抢票

    用CyclicBarrier,reentrantlock,condition来完成同时购买,同步购买的功能 JUC系列之模拟抢票(N人同时抢票,票不足系统补仓,N-M人继续抢票) http://blog.csdn.net/crazyzxljing0621/article/details/77891620

    CyclicBarrier用法.docx

    CyclicBarrier是Java并发编程中一个非常重要的工具类,它属于java.util.concurrent包,主要用于多线程间的协作,尤其在需要多个线程等待彼此完成特定任务后才能继续执行的场景中发挥着关键作用。CyclicBarrier的名字...

    CyclicBarrier(处理方案示例).md

    CyclicBarrier是一种在Java并发编程中...它能够有效地组织和协调线程的执行流程,使得程序可以在适当的时刻进行协调一致的操作。通过合理使用和异常处理,CyclicBarrier能够帮助开发者编写出更加健壮和高效的并发程序。

    java.CyclicBarrier.md

    Java中的CyclicBarrier是一个同步辅助类,用于使一组线程互相等待,直到所有线程都达到了某个公共屏障点,然后它们才能继续执行。这个概念中的“Cyclic”一词表明这个屏障是循环使用,允许重复利用的。CyclicBarrier...

    java.CyclicBarrier(处理方案示例).md

    Java中的CyclicBarrier类是一个同步辅助类,用于在多个线程之间进行同步协作。它允许一组线程相互等待,直到所有线程都达到了某个共同的屏障点(barrier point),然后这些线程才会继续执行后续的任务。...

    java并发编程中CountDownLatch和CyclicBarrier的使用借鉴.pdf

    在上面的例子中,CyclicBarrier被用来模拟四个游戏玩家玩游戏的场景,其中四个游戏玩家需要等待彼此达到某一目标后进行自己的下一步工作。 在这个场景中,CyclicBarrier的使用可以使得四个游戏玩家等待彼此达到某一...

    Java中的CyclicBarrier类最全讲义

    在这个例子中,主任务会在所有子任务都完成之后打印出一条消息,表明所有子任务已经完成,并准备继续执行下一步操作。 ## 4. 循环使用CyclicBarrier ### 4.1 场景介绍 在某些应用场景中,任务可能会被重复执行多...

    Java并发实例之CyclicBarrier的使用

    Java并发实例之CyclicBarrier的使用 CyclicBarrier是Java中的一种多线程并发控制实用工具,和CountDownLatch非常类似,它也可以实现线程间的计数等待,但是它的功能比CountDownLatch更加复杂且强大。CyclicBarrier...

    28 人齐了,一起行动—CyclicBarrier详解.pdf

    在描述中提到的例子中,CyclicBarrier 被用来模拟黑车司机等待乘客上车的情景。当车辆满员(即达到预先设定的计数器阈值)时,才会触发预设的任务(如“人满了发车”)。这个例子展示了 CyclicBarrier 的基本用法: ...

    Java中的CountDownLatch与CyclicBarrier:深入理解与应用实践

    在Java的并发编程中,CountDownLatch和CyclicBarrier是两个非常重要的同步工具,它们用于协调多个线程的执行顺序。本文将详细介绍CountDownLatch和CyclicBarrier的工作原理、使用场景以及如何在实际项目中应用它们。...

    java并发编程中CountDownLatch和CyclicBarrier的使用.pdf

    在上述的百米赛跑例子中,CountDownLatch被巧妙地应用了。`CountDownLatch(int count)`构造函数接收一个初始计数值,表示需要等待的线程数量。每个线程完成任务后,调用`countDown()`方法使计数值减一,直到计数值减...

    Java并发编程(CyclicBarrier)实例详解

    Java并发编程(CyclicBarrier)实例详解 Java并发编程(CyclicBarrier)实例详解主要介绍了Java并发编程(CyclicBarrier)实例详解的相关资料,JAVA编写并发程序的时候,我们需要仔细去思考一下并发流程的控制,...

    关于线程的例子

    本示例将围绕“关于线程的例子”进行深入探讨,结合Eclipse3.3、MyEclipse6以及jdk1.5的软件环境,我们将学习如何在Java中创建、管理及同步线程。 首先,让我们了解线程的基本概念。线程是进程内的一个执行单元,每...

Global site tag (gtag.js) - Google Analytics