并发编程工具之四:Exchanger 使用
来源:互联网 发布:什么是淘宝第三方活动 编辑:程序博客网 时间:2024/06/07 19:52
Exchanger 使用
Exchanger(java.util.concurrent包的类),从名字上理解就是交换。它用于在两个线程之间进行交换数据。线程会阻塞在Exchanger的exchange方法上,知道另一个线程也到了同一个Exchanger的exchange方法时,二者进行交换,然后两个线程会继续执行自身相关的代码。
如上图,无论谁先到达exchanger.exchange,都会等待另一个线程也到达,然后进行数据交换,继续向下执行。
下边结合一个例子可以让我们快速了解这个类的使用:
public class TestExchanger { public static void main(String[] args) { final Exchanger<List<Integer>> changer = new Exchanger<List<Integer>>(); new Thread("A"){ public void run() { List<Integer> l1 = new ArrayList<>(); l1.add(1); l1.add(2); try { l1 = changer.exchange(l1); } catch (InterruptedException e) { e.printStackTrace(); } System.err.println("线程: " + Thread.currentThread().getName() + " " + l1); } }.start(); new Thread("B"){ public void run() { List<Integer> l2 = new ArrayList<>(); l2.add(3); l2.add(4); try { l2 = changer.exchange(l2); } catch (InterruptedException e) { e.printStackTrace(); } System.err.println("线程: " + Thread.currentThread().getName() + " " + l2); } }.start(); }}运行结果:线程: B [1, 2]线程: A [3, 4]
阅读全文
0 0
- 并发编程工具之四:Exchanger 使用
- 高级并发编程学习之使用Exchanger
- java并发编程之Exchanger
- java并发编程系列之Exchanger的使用
- 并发编程之交换器Exchanger
- 【Java并发编程】02.Exchanger的使用
- 线程并发工具--Exchanger
- Exchanger 并发工具类
- Java并发之Exchanger
- 多线程进阶之并发工具类第二篇:Semaphore、Exchanger
- 【java并发】线程同步工具Exchanger的使用
- java 并发工具类-Exchanger
- Java并发编程系列之二十四:Exchanger
- Java并发编程-同步辅助类之Exchanger
- Java并发编程核心方法与框架-exchanger的使用
- Java并发编程——Exchanger的使用
- 并发编程Semaphore and Exchanger
- Java并发学习(十八)-并发工具Exchanger
- redis学习笔记完整版
- 遗传算法及其代码实现(占坑)
- Idea+maven+tomcat部署第一个tomcat项目
- 大规模问题总结(占坑)
- 失败的项目总结经验
- 并发编程工具之四:Exchanger 使用
- define和 inline的区别
- 大规模问题算法(占坑)
- 51nod 1290 Counting Diff Pairs
- Django之使用extra报错处理
- Dubbo本地调试
- day17 异常、File类、io流
- docker查看全部容器命令
- Oracle查看、添加分区(持续更新)