`

JAVA5线程并发库[8]-Exchanger(转)

阅读更多

    用于实现两个线程之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人要一直等待第二个人拿着数据到来时,才能彼此交换数据

   

import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
 
public class ExchangerTest {
 
     public static void main(String[] args) {
         ExecutorService service = Executors.newCachedThreadPool();
         final Exchanger<String> exchanger = new Exchanger<String>();
         service.execute( new Runnable() {
             public void run() {
                 try {
 
                     String data1 = "MacBook Pro" ;
                     System.out.println( "线程" + Thread.currentThread().getName()
                             + "正在把数据" + data1 + "换出去" );
                     Thread.sleep(( long ) (Math.random() * 10000 ));
                     String data2 = (String) exchanger.exchange(data1);
                     System.out.println( "线程" + Thread.currentThread().getName()
                             + "换回的数据为" + data2);
                 } catch (Exception e) {
 
                 }
             }
         });
         service.execute( new Runnable() {
             public void run() {
                 try {
 
                     String data1 = "8000RMB" ;
                     System.out.println( "线程" + Thread.currentThread().getName()
                             + "正在把数据" + data1 + "换出去" );
                     Thread.sleep(( long ) (Math.random() * 10000 ));
                     String data2 = (String) exchanger.exchange(data1);
                     System.out.println( "线程" + Thread.currentThread().getName()
                             + "换回的数据为" + data2);
                 } catch (Exception e) {
 
                 }
             }
         });
         service.shutdown();
     }
}

上面讲到这些看上去意义不大,其实新技术就是这个样子,你没有遇到新技术善于解决的需求,所以没有看到它的价值,不过说不定下个月,老板的需求就让你抓耳挠腮了,那个时候说不定就是这些新技术大显身手的时候

 

 

 

转自:http://blog.onede4.com/java5-thread-concurrent-exchanger/

分享到:
评论

相关推荐

    张孝祥Java多线程与并发库高级应用笔记

    Java5线程并发库的应用 - **高级特性**:包括`ExecutorService`、`Future`、`Semaphore`、`CountDownLatch`、`CyclicBarrier`、`Exchanger`等工具,提供了更灵活、强大的线程调度和控制机制。 - **优势**:减少...

    JAVA线程高级-线程按序交替执行

    在Java编程中,多线程是并发编程的重要组成部分,它允许程序同时执行多个任务,从而提高了系统的效率和响应性。然而,在某些场景下,我们可能需要控制线程的执行顺序,确保它们按照特定的顺序交替运行,这在并发编程...

    java线程与并发编程实践

    Java线程与并发编程实践是Java开发者必备的技能之一,特别是在多核处理器和高并发应用环境中,有效地管理和利用线程能极大地提升程序的性能。本书《java线程与并发实践编程》由Jeff Friesen撰写,2017年2月出版,...

    经典Java多线程与并发库高级应用

    Java线程是Java程序的基础,它代表程序中的一条执行线索或线路。在Java中创建线程有两种传统方式,一种是通过继承Thread类并覆盖其run方法来创建线程;另一种是通过传递实现了Runnable接口的对象给Thread类的构造...

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

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

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

    《实战Java高并发程序设计》第二版是一本深入探讨Java多线程和并发编程的书籍。这本书涵盖了Java并发编程的核心概念和技术,旨在帮助开发者在实际项目中高效地处理高并发场景。随书附带的代码提供了丰富的示例,以便...

    Java_并发核心编程-中文翻译_英文原版开源项目JNA-中文翻译版

    Java并发核心编程是Java开发中的重要领域,它涉及到如何在多线程环境下高效地执行代码,以充分利用现代多核处理器的资源。在这个话题中,我们将深入探讨Java并发的关键概念、工具和技术。 首先,我们要理解Java并发...

    Java互联网架构多线程并发编程原理及实战 视频教程 下载.zip

    Java互联网架构多线程并发编程原理及实战 视频教程 下载 1-1 课程简介.mp4 1-2 什么是并发编程.mp4 1-3 并发编程的挑战之频繁的上下文切换.mp4 1-4 并发编程的挑战之死锁.mp4 1-5 并发编程的挑战之线程安全....

    Java互联网架构多线程并发编程原理及实战 视频教程 下载4.zip

    Java互联网架构多线程并发编程原理及实战 视频教程 下载 1-1 课程简介.mp4 1-2 什么是并发编程.mp4 1-3 并发编程的挑战之频繁的上下文切换.mp4 1-4 并发编程的挑战之死锁.mp4 1-5 并发编程的挑战之线程安全....

    Java互联网架构多线程并发编程原理及实战 视频教程 下载2.zip

    Java互联网架构多线程并发编程原理及实战 视频教程 下载 1-1 课程简介.mp4 1-2 什么是并发编程.mp4 1-3 并发编程的挑战之频繁的上下文切换.mp4 1-4 并发编程的挑战之死锁.mp4 1-5 并发编程的挑战之线程安全....

    Java互联网架构多线程并发编程原理及实战 视频教程 下载3.zip

    Java互联网架构多线程并发编程原理及实战 视频教程 下载 1-1 课程简介.mp4 1-2 什么是并发编程.mp4 1-3 并发编程的挑战之频繁的上下文切换.mp4 1-4 并发编程的挑战之死锁.mp4 1-5 并发编程的挑战之线程安全....

    Java互联网架构多线程并发编程原理及实战 视频教程 下载1.zip

    Java互联网架构多线程并发编程原理及实战 视频教程 下载 1-1 课程简介.mp4 1-2 什么是并发编程.mp4 1-3 并发编程的挑战之频繁的上下文切换.mp4 1-4 并发编程的挑战之死锁.mp4 1-5 并发编程的挑战之线程安全....

    【2018最新最详细】并发多线程教程

    【2018最新最详细】并发多线程教程,课程结构如下 1.并发编程的优缺点 2.线程的状态转换以及基本操作 ...26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题

    Java并发编程实践-03章-使用JDK并发包构建程序1

    `java.util.concurrent`包是Java标准库中专门用于并发编程的模块,它包含了各种线程安全的数据结构、同步机制和执行模型。这个包的引入极大地简化了并发编程的复杂性,提供了一套高效且易用的并发工具。 **3.2 ...

    JAVA并发编程-2-线程并发工具类

    JAVA并发编程-2-线程并发工具类一、Fork/Join1、分而治之与工作密取2、使用标准范式3、Fork/Join的同步用法4、Fork/Join的异步用法二、CountDownLatch三、CyclicBarrier四、Semaphore信号量五、Exchanger ...

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

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

Global site tag (gtag.js) - Google Analytics