Java高级之Exchanger
来源:互联网 发布:航天科工智慧 java 编辑:程序博客网 时间:2024/06/06 07:01
Exchanger概念简介
Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。Exchanger提供了 一个同步点 , 当两个线程都到了在这个同步点,两个线程可以交换数据 。每个线程通过exchange()方法的入口提供数据给另外的线程,并接收其它线程提供的数据,并返回。比如当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B各自继续运行。
public class ExchangerDemo {public static void main(String[] args) {ExecutorService executorService = Executors.newCachedThreadPool();final Exchanger<String> exchanger = new Exchanger<>();executorService.execute(new Runnable() {@Overridepublic void run() {String data1 = "wangjian";System.out.println("线程"+Thread.currentThread().getName()+"准备交换数据:"+data1);try {String data2 = exchanger.exchange(data1);System.err.println("线程"+Thread.currentThread().getName()+"交换后的数据是:"+data2);} catch (InterruptedException e) {e.printStackTrace();}}});executorService.execute(new Runnable() {@Overridepublic void run() {String data1 = "shiheng";System.out.println("线程"+Thread.currentThread().getName()+"准备交换数据:"+data1);try {String data2 = exchanger.exchange(data1);System.err.println("线程"+Thread.currentThread().getName()+"交换后的数据是:"+data2);} catch (InterruptedException e) {e.printStackTrace();}}});executorService.shutdown();}}运行结果:
线程pool-1-thread-2交换后的数据是:wangjian线程pool-1-thread-1交换后的数据是:shiheng线程pool-1-thread-1准备交换数据:wangjian线程pool-1-thread-2准备交换数据:shiheng
0 0
- Java高级之Exchanger
- Java高级篇(四十五)------Java线程之Exchanger
- Java多线程之Exchanger
- Java线程之Exchanger
- JAVA多线程之Exchanger
- Java多线程之Exchanger
- java线程之Exchanger
- Java多线程之Exchanger
- java多线程之Exchanger
- Java并发之Exchanger
- java 多线程之Exchanger
- 高级并发编程学习之使用Exchanger
- java并发编程之Exchanger
- java多线程之(Exchanger)
- (十二)java多线程之Exchanger
- Java并发之Exchanger类
- Java并发之Exchanger详解
- Java多线程与并发库高级应用之线程数据交换Exchanger
- CAS单点登录学习笔记
- TCP/IP详解学习笔记(10)-TCP连接的建立与中止
- Windows下配置nginx+php(wnmp)
- 9个循环2
- 开心就好
- Java高级之Exchanger
- 易点固定资产管理云平台: “互联网+”下的固定资产管理设想
- 关于sublime txt3安装jQuery提示补全插件等相关方法
- 求和
- Swift、OC调用Framework
- BZOJ2242 [SDOI2011]计算器 题解&代码
- TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流
- Queue、BlockingQueue以及用BlockingQueue实现生产者/消费者模式
- VB作业