美文网首页
使用Exchanger交换两个线程之间的数据

使用Exchanger交换两个线程之间的数据

作者: 全麦土司 | 来源:发表于2020-01-14 14:31 被阅读0次

话不多说,直接上代码:

/*
测试Exchange的功能,交换两个线程的数据
 */
public class Exc {
    //这个是交换两个线程之间的字符串集合
    public static Exchanger<Set<String>> exchanger = new Exchanger<Set<String>>();

    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Set<String> setA = new HashSet<>();
                setA.add("cheng");
                setA.add("yi");
                setA.add("ming");
                System.out.println("原来的setA:"+setA);
                try {
                    setA = exchanger.exchange(setA);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("后来的setA:"+setA);

            }
        }).start();


        new Thread(new Runnable() {
            @Override
            public void run() {
                Set<String> setB = new HashSet<>();
                setB.add("liu");
                setB.add("dun");
                setB.add("sheng");
                System.out.println("原来的setB:"+setB);
                try {
                    setB = exchanger.exchange(setB);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("后来的setB:"+setB);
            }
        }).start();


    }
    
}



结果:

原来的setA:[yi, ming, cheng]
原来的setB:[liu, dun, sheng]
后来的setB:[yi, ming, cheng]
后来的setA:[liu, dun, sheng]

相关文章

  • 基于CAS的一些锁(7)- Exchanger

    Exchanger 交换器,用于两个线程之间交换数据。 可以把exchanger想象成一个容器,这个容器有两个值,...

  • Exchanger

    java.util.concurrent.Exchanger 是用来支持两个线程之间交换数据,不支持更多线程。cl...

  • 线程间数据交换 - Exchanger

    什么是Exchanger? 线程间协作的一个工具类,简单点说就是两个线程之间交换数据,两个线程之间通过exchan...

  • JUC-(6)并发工具(下)

    Exchanger(交换机) 交换机(Exchanger)主要用于线程之间数据交换的工具,它提供一个同步点,在这个...

  • 19.Exchanger

    Exchanger用于线程之间交换数据。 Exchanger的核心机制和Lock一样,也是CAS+park/unp...

  • Exchanger-两个线程数据交换

    Exchanger Exchanger 类表示一种两个线程可以进行互相交换对象的会和点。只能用于两个线程之间,并且...

  • Exchanger的理解和使用

    一、简介 Exchanger用于两个线程之间进行数据交换,每个线程调用exchage方法到达各自的同步点,当且仅当...

  • 并发工具类(4)两个线程进行数据交换的Exchanger

    简介 Exchanger(交换者)是一个用于线程间写作的工具类。Exchanger用于进行线程间的数据交换。它提供...

  • 线程的并发工具类 --- Exchange

    Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger 用于进行 线程间的数据交换。它提供一...

  • 并发工具类 Exchanger

    简介 Exchanger(交换者),一个用于线程间协作的工具类。Exchanger用于线程间的数据交换,提供了一个...

网友评论

      本文标题:使用Exchanger交换两个线程之间的数据

      本文链接:https://www.haomeiwen.com/subject/qzqaactx.html