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

跟着作者的65节课彻底搞懂Java并发原理专栏,一步步彻底搞懂Java并发原理。

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

线程间交换信息

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

Java多线程并发控制工具交换器Exchanger的实现原理及例子_第1张图片

模拟实现

为了更好地理解两个线程之间通信的问题,我们来模拟实现两个线程的通信。在下面的代码中,两个变量分别用于保存来自线程一和线程二的消息,其中message2对应来自线程一的消息,而message1对应来自线程二的消息。由于无法预知两个线程的先后顺序,所以需要线程一和线程二通过一个while循环来确保给变量赋值,完成消息的交换。

Java多线程并发控制工具交换器Exchanger的实现原理及例子_第2张图片

你可能感兴趣的:(Java多线程并发控制工具交换器Exchanger的实现原理及例子)