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

2020-03-16  本文已影响0人  咕噜咕噜_f443

Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger 用于进行 线程间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此 的数据。这两个线程通过 exchange 方法交换数据,如果第一个线程先执行 exchange()方法,它会一直等待第二个线程也执行 exchange 方法,当两个线程都 到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对 方。

示例:

/**

*类说明:演示Exchange用法

*/

public class UseExchange {

private static final Exchanger>exchange =new Exchanger>();

public static void main(String[] args) {

new Thread(new Runnable() {

@Override

            public void run() {

              Set<String> setA = new HashSet<String>();//存放数据的容器

                try {

                  /*添加数据* set.add(.....)

* */

                  setA = exchange.exchange(setA);//交换set

                  /*处理交换后的数据*/

                } catch (InterruptedException e) {

}

}

        }).start();

new Thread(new Runnable() {

@Override

            public void run() {

              Set<String> setB = new HashSet<String>();//存放数据的容器

                try {

                  /*添加数据* set.add(.....)

* set.add(.....)

* */

                  setB = exchange.exchange(setB);//交换set

                  /*处理交换后的数据*/

                } catch (InterruptedException e) {

}

}

        }).start();

}

}

上一篇 下一篇

猜你喜欢

热点阅读