运用 Java Exchanger 完成 线程 间数据交换。
请使用 Exchanger 编写一个程序,实现两个线程的信息交互:
public class Test {
public static void main(String[] args) throws InterruptedException {
Exchanger<String> exchanger = new Exchanger<>();
new Thread("线程A"){
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " 等待交换...");
String result = null;
try {
result = exchanger.exchange("一条体育新闻");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 接收到信息:" + result);
}
}.start();
Thread.sleep(2000);
new Thread("线程B"){
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " 等待交换...");
String result = null;
try {
result = exchanger.exchange("一条娱乐新闻");
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 接收到信息:" + result);
}
}.start();
}
}
运行结果如下图:
以上案例运用 Java Exchanger 完成线程间数据交换。