线程辅助类(一)--Exchanger
来源:互联网 发布:山东广电网络集团官网 编辑:程序博客网 时间:2024/05/29 07:13
线程辅助类Exchanger通常用于在两个线程间,在某一同步点,进行数据交换。
一、关键点如下:
1、泛型定义数据交换的类型,如Exchanger<String> exchanger = new Exchanger<>();
2、 exchanger.exchange(data),进行数据交换,参数是用去交换的数据,返回值是交换回来的结果;
二、实例如下:
public class ExchangerMain { public static void main(String[] args) { ExecutorService es = Executors.newFixedThreadPool(2); Exchanger<String> exchanger = new Exchanger<>(); es.submit(new ThreadOne(exchanger)); es.submit(new ThreadTwo(exchanger)); es.shutdown(); } static class ThreadOne implements Callable<String>{ private Exchanger<String> exchanger; public ThreadOne(Exchanger<String> exchanger) { this.exchanger = exchanger; } @Override public String call() throws Exception { String data = "one"; System.out.println(Thread.currentThread().getName() + " wait change data : "+data); String newData = exchanger.exchange(data); System.out.println(Thread.currentThread().getName()+ " change data success ,newData : "+ newData); return null; } } static class ThreadTwo implements Callable<String>{ private Exchanger<String> exchanger; public ThreadTwo(Exchanger<String> exchanger) { this.exchanger = exchanger; } @Override public String call() throws Exception { String data = "two"; System.out.println(Thread.currentThread().getName() + " wait change data : "+data); String newData = exchanger.exchange(data); System.out.println(Thread.currentThread().getName()+ " change data success ,newData : "+ newData); return null; } }}
运行结果:
pool-1-thread-1 wait change data : one
pool-1-thread-2 wait change data : two
pool-1-thread-2 change data success ,newData : one
pool-1-thread-1 change data success ,newData : two
阅读全文
0 0
- 线程辅助类(一)--Exchanger
- 线程同步辅助类——Exchanger
- 线程同步辅助类(一)
- 线程转换类Exchanger
- java多线程:14、Exchanger同步辅助类
- java并发编程之线程同步辅助类(一)
- (转)java线程 Exchanger
- Java多线程--Exchanger(一)
- java 多线程同步辅助类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
- Java并发编程-同步辅助类之Exchanger
- 整理java7中几种常见同步辅助类-Exchanger
- Java Exchanger(两线程交换数据)
- 线程辅助类(二)--CountDownLatch
- 线程辅助类(三)--Semaphore
- 线程辅助类(四)--CyclicBarrier
- 线程辅助类(五)--Phaser
- 线程辅助类
- 线程同步辅助类
- androidSudio学习网站
- 18、vue.js 之路由钩子函数
- 算法作业_24(2017.5.23第十四周)
- hdu1846(巴什博弈)
- offsetwidth与width区别
- 线程辅助类(一)--Exchanger
- (一)表层网络信息获取(Python引擎爬虫)
- Debian&Ubuntu安装apache2
- android手势解锁-------后台恢复到前台就启动手势解锁
- LeetCode14 4sum
- 『ORACLE』 数据泵Data Pump中expdp导出(11g)
- glibc-2.25编译
- python线程锁
- 多态