Java多线程并发控制工具交换器Exchanger的实现原理及例子

跟着做者的65节课完全搞懂Java并发原理专栏,一步步完全搞懂Java并发原理。web

做者简介:笔名seaboat,擅长工程算法、人工智能算法、天然语言处理、架构、分布式、高并发、大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java、Python和C++。平时喜欢看书、写做和运动,擅长篮球、跑步、游泳、健身和羽毛球等运动项目。崇尚开源,崇尚技术自由,更崇尚思想自由。出版书籍:《Tomcat内核设计剖析》、《图解数据结构与算法》、《人工智能原理科普》。算法

线程间交换信息

在并发的场景中,有时候咱们想要在两个线程之间互相交换信息,也就是互相传递消息。这时会发现实现起来并不容易,由于两个线程并发执行的前后顺序很差控制。以下图中,假如两个线程在运行过程当中的某个节点要互相交换信息,那么应该如何来实现呢?编程

交换信息

模拟实现

为了更好地理解两个线程之间通讯的问题,咱们来模拟实现两个线程的通讯。在下面的代码中,两个变量分别用于保存来自线程一和线程二的消息,其中message2对应来自线程一的消息,而message1对应来自线程二的消息。因为没法预知两个线程的前后顺序,因此须要线程一和线程二经过一个while循环来确保给变量赋值,完成消息的交换。数据结构

format,png