java exchange是什么,让我们一起了解一下?
Exchange位于java.util.concurrent包下面,主要是用于线程之间数据交换的工具类,经常用于管道设计和遗传算法中,Exchange提供了一个同步点,在这个同步点上,线程完成配对并进行数据的交换。
exchange的目标是什么?
1、exchange只能用于两个线程进行数据交换,它的交换速率是高效的。
2、exchanger.exchange(object obj):这个方法会阻塞,直到另一个线程也同样调用这个方法进行数据交换,当然也可以使用timeout避免阻塞过长时间。
具体实战操作:可以将Exchange看做是一个双向数据传输的SynchronousQueue。
package com.miracle.study.concurrent; import java.util.concurrent.Exchanger; /** * @author Miracle * @date 2021/4/14 17:47 */ public class ExchangeTest { public static void main(String[] args) throws InterruptedException { Exchanger exchanger = new Exchanger(); new Thread(() ->{ var data = "test01"; String exchange = null; try { exchange = (String) exchanger.exchange(data); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread() + ":" + data); System.out.println(Thread.currentThread() + ":" + exchange); }).start(); new Thread(() ->{ var data = "test02"; String exchange = null; try { exchange = (String) exchanger.exchange(data); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread() + ":" + data); System.out.println(Thread.currentThread() + ":" + exchange); }).start(); Thread.sleep(1000); } }
以上就是小编今天的分享了,希望可以帮助到大家。