Java多线程之Exchanger基础篇

185 阅读1分钟

一、Exchanger应用场景

  • 实现两个线程之间的值交换

二、一个Demo学明白Exchanger

public class MyExchanger {
    public static void main(String[] args) {
        Exchanger<String> exchanger = new Exchanger<>();

        /*下面两个线程将自己的字符变量s进行了交换*/
        new Thread(()->{
            String s = "Thread-1";
            try {
                s = exchanger.exchange(s);
                Thread.sleep(1000);
                System.out.println(Thread.currentThread().getName()+":"+s);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"Thread-1").start();
        new Thread(()->{
            String s = "Thread-2";
            try {
                s = exchanger.exchange(s);
                Thread.sleep(1000);
                System.out.println(Thread.currentThread().getName()+":"+s);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },"Thread-2").start();
    }
}