17_张孝祥_多线程_同步工具Exchanger
来源:互联网 发布:犀牛软件基础教程 编辑:程序博客网 时间:2024/05/16 06:47
可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。
构造方法摘要
Exchanger() 创建一个新的 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 = "zxx"; 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) { e.printStackTrace(); } } }); service.execute(new Runnable() { public void run() { try { String data1 = "lhm"; 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) { e.printStackTrace(); } } }); service.shutdown(); }}
阅读全文
0 0
- 17_张孝祥_多线程_同步工具Exchanger
- 15_张孝祥_多线程_Semaphere同步工具
- 16_张孝祥_多线程_同步工具CyclicBarrier与CountDownLatch
- 多线程_线程同步
- 线程_多线程_同步机制
- Linux高级编程复习 第十二章 多线程概念_互斥锁--_多线程同步_信号_条件量_信号量
- _多线程
- 11_张孝祥_多线程_线程锁技术
- 18_张孝祥_多线程_阻塞队列的应用
- 04_张孝祥_Java多线程_传统线程同步通信技术
- 多线程04_张孝祥-传统线程同步通信技术
- 多线程_线程同步小程序
- 多线程_同步函数&懒汉式&死锁
- ^_^
- ^_^
- ^_^
- ^_^
- *_&
- 一级购物car
- ssh框架的基本运用
- 浅谈SVN服务器迁移的一些注意事项
- 【Java】【教程】Java 教程
- day22网络编程 UDP、TCP协议
- 17_张孝祥_多线程_同步工具Exchanger
- springboot之集成mybatis mongo shiro druid redis jsp
- 76. Minimum Window Substring
- Java的信号量Semaphore
- 写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- linux环境下用GStreamer实现rtsp取流播放
- 项目中css样式不生效
- linux_zip相关压缩解压命令
- bzoj1041 [HAOI2008]圆上的整点 gcd