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);
}
}以上就是小编今天的分享了,希望可以帮助到大家。