文章22 | 阅读 7594 | 点赞0
Exchanger (交换者) 是一个用于线程间协作的工具类。
Exchanger 用于进行线程间的数据交换。
两个线程通过 exchange()
方法交换数据,第一个线程执行到 exchange()
方法后会一直等待第二个线程也执行 exchange()
方法,当两个线程都到达同步点后,这两个线程就可以交换数据。测试代码如下:
public class TestExchanger {
private static final Exchanger<String> exchanger = new Exchanger();
public static void main(String[] args) {
new Thread(() -> {
String s = "t1";
try {
s = exchanger.exchange(s);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " " + s);
}, "T1").start();
new Thread(() -> {
String s = "t2";
try {
s = exchanger.exchange(s);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " " + s);
}, "T2").start();
}
}
控制台输出如下:
T2 t1
T1 t2
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_41685207/article/details/111938049
内容来源于网络,如有侵权,请联系作者删除!