【笔记】Java交换机

前言

java.util.concurrent.Exchanger类标识一种两个线程可以进行互相交换数据的汇合点

创建一些类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class User1 implements Runnable {

private Exchanger<String> exchange;

public User1(Exchanger<String> exchange) {
this.exchange = exchange;
}

@Override
public void run() {
String info1 = "来自用户1的消息";
try {
// 将数据传递给对方,并接收来自对方的数据
String info2 = exchange.exchange(info1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

class User2 implements Runnable {

private Exchanger<String> exchange;

public User2(Exchanger<String> exchange) {
this.exchange = exchange;
}

@Override
public void run() {
String info2 = "来自用户2的消息";
try {
// 将数据传递给对方,并接收来自对方的数据
String info1 = exchange.exchange(info2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

在主方法中创建并使用交换机

1
2
3
4
5
6
public static void main(String[] args) {
// 创建交换机对象
Exchanger<String> exchange = new Exchanger<>();
new Thread(new User1(exchange));
new Thread(new User2(exchange));
}

完成