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

JAVA并发之Exchanger

阅读更多
  JDK1.5中有一个Exchanger类,可以用来完成线程间的数据交换。
类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。当两个线程通过Exchanger交换了对象,这个交换对于两个线程来说都是安全的。
  以下是例子:
 
public class ExgrDemo {
	  public static void main(String args[]) {
		    Exchanger<String> exgr = new Exchanger<String>();

		    new UseString(exgr);
		    new MakeString(exgr);
		  }
		}

		class MakeString implements Runnable {
		  Exchanger<String> ex;

		  String str;

		  MakeString(Exchanger<String> c) {
		    ex = c;
		    str = new String();

		    new Thread(this).start();
		  }

		  public void run() {
		    char ch = 'A';
		    for (int i = 0; i < 3; i++) {
		      for (int j = 0; j < 5; j++)
		        str += (char) ch++;

		      try {
		        str = ex.exchange(str);
		      } catch (InterruptedException exc) {
		        System.out.println(exc);
		      }
		    }
		  }
		}

		class UseString implements Runnable {
		  Exchanger<String> ex;

		  String str;

		  UseString(Exchanger<String> c) {
		    ex = c;
		    new Thread(this).start();
		  }

		  public void run() {

		    for (int i = 0; i < 3; i++) {
		      try {
		        str = ex.exchange(new String());
		        System.out.println("Got: " + str);
		      } catch (InterruptedException exc) {
		        System.out.println(exc);
		      }
		    }
		  }
		}
分享到:
评论

相关推荐

    Java并发编程全景图.pdf

    Java并发编程是Java语言中最为复杂且重要的部分之一,它涉及了多线程编程、内存模型、同步机制等多个领域。为了深入理解Java并发编程,有必要了解其核心技术点和相关实现原理,以下将详细介绍文件中提及的关键知识点...

    JAVA并发编程实践

    Java并发编程是Java高级特性之一,它允许开发者编写能够同时执行多个任务的程序,这对于提高应用程序的性能至关重要。下面将详细探讨Java并发编程中的关键概念、技术及实践技巧。 ### 一、Java并发编程基础 #### ...

    Java 并发编程实战 中英文+代码示例

    3. **并发工具类**:如Semaphore(信号量)、CountDownLatch(计数器)、CyclicBarrier(回环栅栏)和Exchanger(交换器)等,这些都是Java并发库提供的重要工具,用于实现复杂的同步和协作机制。 4. **并发集合**...

    JAVA并发编程实践(中文)含源码

    最后,Java并发工具类,如Semaphore(信号量)、CyclicBarrier(回环栅栏)、CountDownLatch(计数器门闩)和Exchanger(交换器),提供了更高级的同步和协调机制,有助于解决复杂并发场景的问题。 通过阅读《JAVA...

    Java 并发编程实战(高清带目录).zip

    详细讲解了Java并发库中的关键类和接口,如Thread、Runnable、ExecutorService、Future、Semaphore、CyclicBarrier、CountDownLatch、Exchanger以及Lock(ReentrantLock、ReadWriteLock)等,这些都是Java并发编程中...

    java高并发程序设计(原版电子书)

    5. **并发工具类**:介绍`CountDownLatch`、`CyclicBarrier`、`Semaphore`和`Exchanger`等并发工具类,用于协调多个线程间的同步和协作。 6. **并发设计模式**:讨论适用于并发编程的设计模式,如生产者-消费者模式...

    java并发编程技术

    Java并发编程技术是Java开发中的重要领域,它涉及到如何在多线程环境下高效地执行程序。并发编程可以充分利用多核处理器资源,提高系统的响应速度和处理能力。以下是一些核心的知识点: 1. **并行程序**:并行程序...

    java并发Exchanger的使用

    Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用exchange方法之后,会等待另外的线程调用同样的exchange方法。 两个线程都...

    java并发之并发工具类

    Java 并发工具类中有很多种,今天我们主要介绍四种:CyclicBarrier、CountDownLatch、Semaphore 和 Exchanger。 一、CyclicBarrier CyclicBarrier 是一种同步工具,允许一组线程互相等待,直到到达某个公共屏障点...

    java并发工具包 java.util.concurrent中文版用户指南pdf

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    java并发编程:设计原则与模式.rar

    Java并发工具类库(java.util.concurrent)是并发编程中的另一个重要主题,包括Atomic类(提供原子操作)、Semaphore(信号量)、CountDownLatch(计数器门锁)、CyclicBarrier(循环栅栏)和Exchanger(交换器)等...

    java并发工具包详解

    1. java.util.concurrent - Java 并发工具包 2. 阻塞队列 BlockingQueue 3. 数组阻塞队列 ArrayBlockingQueue 4. 延迟队列 DelayQueue 5. 链阻塞队列 LinkedBlockingQueue 6. 具有优先级的阻塞队列 ...

    龙果java并发编程完整视频

    第40节并发工具类Exchanger详解00:13:47分钟 | 第41节CountDownLatch,CyclicBarrier,Semaphore源码解析00:29:57分钟 | 第42节提前完成任务之FutureTask使用00:11:43分钟 | 第43节Future设计模式实现(实现类似于...

    java并发工具类(CountDownLatch+Semaphore+Exchanger)

    Java并发工具类是Java并发编程中的重要组成部分,其中包括了多种实用的工具,如CountDownLatch、Semaphore和Exchanger,这些工具类极大地简化了多线程环境下的同步和协调问题。 1. **CountDownLatch**: ...

    实战Java高并发程序设计第二版随书代码

    这本书涵盖了Java并发编程的核心概念和技术,旨在帮助开发者在实际项目中高效地处理高并发场景。随书附带的代码提供了丰富的示例,以便读者能够更直观地理解并实践这些理论知识。 1. **Java并发基础** - **线程与...

    Java 并发核心编程原文+译文

    Java并发核心编程是Java开发中的重要领域,它涉及到多线程和高效率程序设计的关键技术。在Java 5和Java 6中,JVM引入了大量的并发工具和改进,以支持多处理器和多核系统上的高性能应用程序。以下是这些知识点的详细...

    java并发工具类

    Java并发工具类是Java平台提供的一系列用于处理多线程并发问题的类和接口,它们在`java.util.concurrent`包中。并发问题主要包括资源竞争、死锁、活锁以及饥饿等,合理使用并发工具可以有效地提高程序的并发性能并...

    《Java并发编程实战》PDF版本下载.txt

    根据提供的文件信息,我们可以推断出这是一份关于获取《Java并发编程实战》PDF版本的资源分享。然而,为了满足您对于生成相关知识点的需求,我们将围绕《Java并发编程实战》这本书的内容来展开讨论,深入解析Java...

    Java并发编程原理与实战

    并发工具类Exchanger详解.mp4 CountDownLatch,CyclicBarrier,Semaphore源码解析.mp4 提前完成任务之FutureTask使用.mp4 Future设计模式实现(实现类似于JDK提供的Future).mp4 Future源码解读.mp4 ForkJoin框架详解....

    Java并发编程实践-电子书1-9章pdf

    《Java并发编程实践》是Java开发者深入理解并发编程的重要参考资料,尤其对于想要提升多线程应用设计和性能优化技能的程序员来说,这本书提供了丰富的实践经验和深入的理论知识。以下是根据提供的章节内容概述的一些...

Global site tag (gtag.js) - Google Analytics