多线程之Exchanger

多线程之Exchanger

Exchanger是一个用于线程间协作的工具类,用于两个线程间交换。

img

例子:

方做交易,如果一方先到要等另一方也到了才能交易,交易就是执行exchange方法交换数据。

public class ExchangerTest {
private static Exchanger<String> exchanger = new Exchanger<String>();
static String goods = "电脑";
static String money = "$1000";

public static void main(String[] args) throws InterruptedException {
System.out.println("准备交易,一手交钱一手交货...");
// 卖家
new Thread() {
public void run() {
System.out.println(getName() + " 卖家到了,已经准备好货:" + goods);
try {
String money = exchanger.exchange(goods);
System.out.println(getName() + " 卖家收到钱:" + money);
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
Thread.sleep(3000);
// 买家
new Thread() {
public void run() {
try {
System.out.println(getName() + " 买家到了,已经准备好钱:" + money);
String goods = exchanger.exchange(money);
System.out.println(getName() + " 买家收到货:" + goods);
} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}

https://mp.weixin.qq.com/s?__biz=MzAxMjEwMzQ5MA==&mid=2448891250&idx=3&sn=1277f19bf3de97ce84c136bdb49acc64&scene=21#wechat_redirect