该类是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个通不见,两个线程可以交换彼此间的数据。这两个线程通过exchange方法交换数据:如果第一个线程执行exchange(),它会一直等待第二个线程exchange(),当两个线程达到同步点,这两个线程就可以交换线程。
    虽然我不知道这个类有啥作用(ε=ε=ε=┏(゜ロ゜;)┛
    但是书上说可以用于遗传算法、校对工作:

    1. Exchanger<String> exchanger = new Exchanger<>();
    2. new Thread(() -> {
    3. String dataOfAThread = Thread.currentThread().getName() + "-----A的数据";
    4. try {
    5. String resultOfBThread = exchanger.exchange(dataOfAThread);
    6. System.out.println(Thread.currentThread().getName() + "-------> " + resultOfBThread);
    7. } catch (InterruptedException e) {
    8. e.printStackTrace();
    9. }
    10. }).start();
    11. new Thread(() -> {
    12. String dataOfBThread = Thread.currentThread().getName() + "-----B的数据";
    13. try {
    14. String resultOfAThread = exchanger.exchange(dataOfBThread);
    15. System.out.println(Thread.currentThread().getName() + "-------> " + resultOfAThread);
    16. } catch (InterruptedException e) {
    17. e.printStackTrace();
    18. }
    19. }).start();

    最后输出:

    1. Thread-1-------> Thread-0-----A的数据
    2. Thread-0-------> Thread-1-----B的数据

    类似于游戏中的物品交易,双方都确认之后(运行到某一个点上,一方不同意就卡着),交换物品