- Java并发编程:核心方法与框架
- 高洪岩
- 220字
- 2023-01-19 15:09:19
![](https://epubservercos.yuewen.com/D3D8F4/4410924203007901/epubprivate/OEBPS/Images/icon1.png?sign=1739474030-Jp2rg2LVvh7NCxcNmIbLWFxf6pztgwmq-0-afab7df561550a3af0a942ae2d8e3236)
1.2.2 方法exchange()传递数据
创建测试用的项目Exchanger_2,创建ThreadA.java类代码如下:
package extthread; import java.util.concurrent.Exchanger; public class ThreadA extends Thread { private Exchanger<String> exchanger; public ThreadA(Exchanger<String> exchanger) { super(); this.exchanger = exchanger; } @Override public void run() { try { System.out.println("在线程A中得到线程B的值=" + exchanger.exchange("中国人A")); } catch (InterruptedException e) { e.printStackTrace(); } } }
创建ThreadB.java类代码如下:
package extthread; import java.util.concurrent.Exchanger; public class ThreadB extends Thread { private Exchanger<String> exchanger; public ThreadB(Exchanger<String> exchanger) { super(); this.exchanger = exchanger; } @Override public void run() { try { System.out.println("在线程B中得到线程A的值=" + exchanger.exchange("中国人B")); } catch (InterruptedException e) { e.printStackTrace(); } } }
运行类Run.java代码如下:
package test.run; import java.util.concurrent.Exchanger; import extthread.ThreadA; import extthread.ThreadB; public class Run { public static void main(String[] args) { Exchanger<String> exchanger = new Exchanger<String>(); ThreadA a = new ThreadA(exchanger); ThreadB b = new ThreadB(exchanger); a.start(); b.start(); } }
程序运行后的效果如图1-30所示。
![](https://epubservercos.yuewen.com/D3D8F4/4410924203007901/epubprivate/OEBPS/Images/figure_0046_0001.jpg?sign=1739474030-4YNYAqjxBEXgdG0EP7Xf0X2tprQRv4OE-0-b56b31bfeb12db63b9de5de8fbd9e2d0)
图1-30 成功交换数据