Java线程通信-Exchanger
2017-06-10 17:20
162 查看
Exchanger
帮助两个线程之间交换数据,不过要两个线程都先拿出数据,然后才能进行数据交换
测试代码
效果
帮助两个线程之间交换数据,不过要两个线程都先拿出数据,然后才能进行数据交换
测试代码
package com.zhiwei.thread; import java.util.concurrent.Exchanger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** *特点: 一定要等双方将数据都拿出来后才能交换(只能是两个线程) * @author Yang ZhiWei * */ public class ExchangerTest { public static void main(String[] args) { ExecutorService threadPool=Executors.newCachedThreadPool(); Exchanger<String> exchanger=new Exchanger<String>(); threadPool.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+":交换数据:"+Thread.currentThread().getName()); try { String getDate = exchanger.exchange(Thread.currentThread().getName()); System.out.println(Thread.currentThread().getName()+":收到数据:"+getDate); } catch (InterruptedException e) { e.printStackTrace(); } } }); threadPool.execute(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"交换数据:"+Thread.currentThread().getName()); try { String getDate = exchanger.exchange(Thread.currentThread().getName()); System.out.println(Thread.currentThread().getName()+"收到数据:"+getDate); } catch (InterruptedException e) { e.printStackTrace(); } } }); threadPool.shutdown(); } }
效果
相关文章推荐
- java并发库 Exchanger 简析
- 同步器之Exchanger
- Exchanger的基本用法
- Exchanger
- 5.工具--Exchanger
- java并发中的协同工具类介绍-CountDownLatch-CyclicBarrier-Semphone-Exchanger
- Java多线程编程之使用Exchanger数据交换实例
- dubbo_信息交换Exchanger
- 多线程 : 使用 Exchanger 两个线程间交换数据(一手交钱一手交货)
- Java并发-同步器CyclicBarrier,Exchanger,Phaser
- Java线程之Exchanger
- Java并发编程中Exchanger的用法
- CyclicBarrier、CountDownLatch、Exchanger
- Join,CountDownLatch,CyclicBarrier,Semaphore和Exchanger
- 两个线程进行数据交换的Exchanger
- CyclicBarrier CountDownLatch Semaphore Exchanger
- Java并发 Exchanger
- java线程通信
- 11.5.4线程 同步装置之Exchanger
- JAVA多线程之Exchanger