21xrx.com
2024-09-08 09:58:41 Sunday
登录
文章检索 我的文章 写文章
Java Exchanger交换器:如何实现两个线程之间的数据交换
2023-06-15 16:48:01 深夜i     --     --
- Exchanger - Java - 数据交换

Java Exchanger交换器:如何实现两个线程之间的数据交换

Exchanger是Java里面一个同步工具类,它可以在两个线程之间传递数据,即一个线程可以将自己的数据传递给另一个线程。Exchanger实现数据交换的方式很简单,它提供一个exchange()方法用于在线程之间交换数据,这个方法会阻塞等待另一个线程到达交换点。

下面是一个Exchanger的例子,用于演示两个线程之间数据的交换:


import java.util.concurrent.Exchanger;

public class ExchangerDemo {

  public static void main(String[] args) {

    Exchanger exchanger = new Exchanger<>();

    new Thread(() -> {

      String data = "这是来自线程A的数据";

      try {

        String exchangeData = exchanger.exchange(data);

        System.out.println(Thread.currentThread().getName() + "交换的数据为:" + exchangeData);

      } catch (InterruptedException e) {

        e.printStackTrace();

      }

    }, "线程A").start();

    new Thread(() -> {

      String data = "这是来自线程B的数据";

      try {

        String exchangeData = exchanger.exchange(data);

        System.out.println(Thread.currentThread().getName() + "交换的数据为:" + exchangeData);

      } catch (InterruptedException e) {

        e.printStackTrace();

      }

    }, "线程B").start();

  }

}

运行结果:


线程A交换的数据为:这是来自线程B的数据

线程B交换的数据为:这是来自线程A的数据

在上面的例子中,我们创建了一个Exchanger对象并创建了两个线程A和B。线程A将自己的数据传递给线程B,并从线程B接收到另一个数据,线程B同样也是如此。

关键词:

- Exchanger

- Java

- 数据交换

  
  
下一篇: C语言中的3D %

评论区

{{item['qq_nickname']}}
()
回复
回复