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

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

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容