
java exchange是什么,讓我們一起了解一下?
Exchange位于java.util.concurrent包下面,主要是用于線程之間數(shù)據(jù)交換的工具類,經(jīng)常用于管道設(shè)計和遺傳算法中,Exchange提供了一個同步點,在這個同步點上,線程完成配對并進行數(shù)據(jù)的交換。
exchange的目標(biāo)是什么?
1、exchange只能用于兩個線程進行數(shù)據(jù)交換,它的交換速率是高效的。
2、exchanger.exchange(object obj):這個方法會阻塞,直到另一個線程也同樣調(diào)用這個方法進行數(shù)據(jù)交換,當(dāng)然也可以使用timeout避免阻塞過長時間。

具體實戰(zhàn)操作:可以將Exchange看做是一個雙向數(shù)據(jù)傳輸?shù)腟ynchronousQueue。
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);
????}
}以上就是小編今天的分享了,希望可以幫助到大家。
