当前位置:秒懂库 > IT科技 > java,exchange
手机版

java,exchange

来源:秒懂库 阅读:2.17W 次

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java exchange是什么,让我们一起了解一下?

Exchange位于java.util.concurrent包下面,主要是用于线程之间数据交换的工具类,经常用于管道设计和遗传算法中,Exchange提供了一个同步点,在这个同步点上,线程完成配对并进行数据的交换。

exchange的目标是什么?

1、exchange只能用于两个线程进行数据交换,它的交换速率是高效的。

2、exchanger.exchange(object obj):这个方法会阻塞,直到另一个线程也同样调用这个方法进行数据交换,当然也可以使用timeout避免阻塞过长时间

java exchange

具体实战操作:可以将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);    }}

本文链接:https://www.miaodongku.com/itkj/p8rdz1.html

Copyright © 2024. 秒懂库 All right reserved. 黑ICP备20202358号-2

文字美图素材,版权属于原作者。部分文章内容由网友提供推送时因种种原因未能与原作者联系上,若涉及版权问题,敬请原作者联系我们,立即处理。