多线程之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