多线程之Exchanger-线程间共享信息

package com.example.test.async;
import lombok.Getter;
import java.util.concurrent.Exchanger;
/**
* 小红和小明是好朋友
* 小红想知道小明的小秘密
* 小明也想知道小红的小秘密
* 于是他们打算互相交换自己的小秘密
*/
public class ExchangerTest {
private static final Exchanger<String> EXCHANGER = new Exchanger<>();
public static void main(String[] args) {
new ExchangerTask("小红", EXCHANGER, "小强竟然会怕毛毛虫🐛").start();
new ExchangerTask("小明", EXCHANGER, "小刚竟然会怕青蛙🐸").start();
}
}
@Getter
class ExchangerTask extends Thread {
private String secret;
private Exchanger<String> exchanger;
public ExchangerTask(String name, Exchanger<String> exchanger, String secret) {
this.secret = secret;
this.exchanger = exchanger;
this.setName(name);
System.out.println(name + "的秘密是:" + secret);
}
@Override
public void run() {
try {
String exchange = exchanger.exchange(this.secret);
System.out.println(this.getName() + "-交换得到的秘密是:" + exchange);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}

结果

posted @   我自逍遥  阅读(24)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示