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(); } }
浙公网安备 33010602011771号