前言
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)); }
|
完成