java exchanger如何与线程池配合

avatar
作者
猴君
阅读量:2

Java中的Exchanger类可以与线程池配合使用,以实现线程之间的数据交换。Exchanger类允许两个线程在指定的同步点交换数据。这对于需要线程之间协调和同步的场景非常有用,比如生产者-消费者模型。

以下是一个示例代码,演示了如何在线程池中使用Exchanger类进行数据交换:

import java.util.concurrent.Exchanger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;  public class ExchangerExample {     public static void main(String[] args) {         Exchanger<String> exchanger = new Exchanger<>();         ExecutorService executor = Executors.newFixedThreadPool(2);          executor.execute(() -> {             try {                 String data1 = "Data from Thread 1";                 System.out.println("Thread 1 has data: " + data1);                 String exchangedData = exchanger.exchange(data1);                 System.out.println("Thread 1 received: " + exchangedData);             } catch (InterruptedException e) {                 e.printStackTrace();             }         });          executor.execute(() -> {             try {                 String data2 = "Data from Thread 2";                 System.out.println("Thread 2 has data: " + data2);                 String exchangedData = exchanger.exchange(data2);                 System.out.println("Thread 2 received: " + exchangedData);             } catch (InterruptedException e) {                 e.printStackTrace();             }         });          executor.shutdown();     } } 

在这个示例中,我们创建了一个包含两个线程的线程池,并使用Exchanger类在两个线程之间交换数据。线程1创建了一个字符串数据并交换给线程2,而线程2创建了另一个字符串数据并交换给线程1,最终两个线程分别打印出接收到的对方交换的数据。

通过这种方式,我们可以在线程池中实现线程之间的数据交换,实现更加灵活和高效的线程协作。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!