Java并发编程-Exchange

本文介绍了Java并发编程中的Exchange工具类,主要用于线程间的数据交换。Exchange提供了一个同步点,线程通过调用exchange()方法进行数据交换。Exchange可视为双向的SynchronousQueue,构造方法包括无参构造,主要方法有exchange(),允许线程在等待另一线程到达交换点时进行数据传输。文中还给出了一个示例,展示了如何在固定线程池中使用Exchange进行字符串数据交换。
摘要由CSDN通过智能技术生成
1.简介

  Exchange位于java.util.concurrent包下面,主要是用于线程之间数据交换的工具类,经常用于管道设计和遗传算法中。Exchange提供了一个同步点,在这个同步点上,线程完成配对并进行数据的交换。第一个线程调用exchange()方法时传入对象,它会一直等待,直到第二个对象调用exchange()方法时,每个线程的exchange()方法将返回并且接收到匹配线程传入到exchange()方法中的对象,完成数据的交换。
  可以将Exchange看做是一个双向数据传输的SynchronousQueue。

2.介绍
2.1构造方法

——public Exchange(){}

  • 创建一个新的Exchange。
2.2 主要方法

——public V exchange(V x) throws InterruptedException{}

  • 等待另外一个线程到达此交换点(除非当前线程被中断),将给定的对象x传送给该线程,并且接收该线程的对象。

——public V exchange(V x) throws InterruptedException{}

  • 等待另外一个线程到达此交换点(除非当前线程被中断,或者超出了指定的等待时间),将指定的对象x传送给该线程,同时接收该线程的对象。
3.案例

创建固定线程池数量为2,两个线程以交换字符串数据为例,其中一个线程执行方法exchange()方法时,将等待,直到第二个线程执行exchange()方法,两个线程完成数据的交换。如果两个线程有一个没有执行exchange()方法,将会一直等待下去

public class ExChangeDemo {
   
  private static ExecutorService exec = Executors.newFixedThreadPool
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值