java exchange

作者:原创时间:2022-03-31
文档

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);
    }
}

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java execute 微信群怎么找 怎么导出微信聊天记录 苹果手机怎么恢复出厂设置 qq怎么清理缓存和垃圾清理 朋友圈怎么转发 微信分组怎么删除 两个excel如何独立显示 excel怎么排序 计算机管理怎么打开 java jep java jetty java jit java jmeter java jmh java jndi java joptionpane java jps java jquery java jsonfield java event java escape java error java epoll java environment java enterprise java generic java enhancer java generator java future java encapsulation java empty java email java ehcache java echarts java formatter java ecc加密 java fork java foreach循环 java ear