美文网首页
线程的并发工具类 --- 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