Java Exchanger

描述

运用 Java Exchanger 完成 线程 间数据交换。

题目

请使用 Exchanger 编写一个程序,实现两个线程的信息交互:

  • 线程 A 给线程 B:一条体育新闻。
  • 线程 B 给线程 A:一条娱乐新闻。

题目解决思路

  1. 创建 Exchanger
  2. 使用 匿名内部类 的方式创建线程,重写 run 方法。
  3. 使用 exchange 方法交换数据。

代码具体实现

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(); } }

运行结果如下图:

21 Java Exchanger.png

以上案例运用 Java Exchanger 完成线程间数据交换。