Java 中的 java.util.concurrent.Exchanger 类及示例

2025年1月6日 | 3 分钟阅读

Java 同步类 Exchanger 是最引人注目的。通过创建同步点,它使两个线程之间的数据交换更容易。这简化了两个线程之间的数据传输。它的工作方式是,它只是等待两个不同的线程调用它的 exchange() 方法。当这种情况发生时,线程提供的数据就会被交换。另一种利用它的方法是双向 SynchronousQueue。下面是泛型类的声明。

类的语法是

- V 表示正在传输的数据类型。

类层次结构如下:

使用的构造函数如下

Exchanger() - 为新创建的 Exchanger 对象成员添加默认值。

Exchanger 类中使用的类方法如下

1. exchange(V x)- 调用此函数时,当前线程会等待另一个线程调用其 exchange 方法,然后继续执行。当两个线程交换数据并且另一个线程调用它们的 exchange 方法后,线程的操作会继续。

语法

2. exchange(V x, long timeout, TimeUnit unit) - 调用此函数时,当前线程会等待另一个线程调用其 exchange 方法,然后继续执行。当两个线程交换数据并且另一个线程调用它们的 exchange 过程后,线程的操作会继续。线程最多可以等待 timeout 参数指定的时间;如果超出该超时时间,则会引发 TimeoutException。

语法

示例

ExchangerExample 程序展示了如何使用 java.util.concurrent 包中的 Exchanger 类来实现线程同步和数据交换。它由两个线程组成:UseString 接收和提供这些字符,而 MakeString 创建新字符。

实施

文件名: ExchangerExample.java

输出

The string is : ABCDEFGH
The string is : IJKLMNOP
Timeout has been Occurred