Exchange 交换者 并发工具类

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

public class ExchangeTest {

    private static Exchanger<String> exchanger =new Exchanger<>();


    //静态内部类

    public static class Thread1 extends Thread{
        @Override
        public void run() {
            try {
                String str ="小乔";
                System.out.println(Thread.currentThread().getName()+":"+str);
                //str 传过去的值 exchange传回来的值
                String exchange =exchanger.exchange(str);
                System.out.println(Thread.currentThread().getName()+":"+exchange);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static class Thread2 extends Thread{
        @Override
        public void run() {
            try {
                String str ="大乔";
                System.out.println(Thread.currentThread().getName()+":"+str);
                //str 传过去的值 exchange传回来的值
                String exchange =exchanger.exchange(str);
                System.out.println(Thread.currentThread().getName()+":"+exchange);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        new Thread1().start();
        new Thread2().start();
    }
}

 

posted on 2021-12-08 11:06  无心睡眠A8  阅读(48)  评论(0)    收藏  举报