美文网首页
线程的并发工具类 --- Exchange

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

作者: 咕噜咕噜_f443 | 来源:发表于2020-03-16 20:55 被阅读0次

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

}

}

相关文章

网友评论

      本文标题:线程的并发工具类 --- Exchange

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