ExchangerTest.java 1.6 KB
Newer Older
武汉红喜's avatar
武汉红喜 已提交
1 2 3 4 5 6
package org.hongxi.java.util.concurrent;

import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

武汉红喜's avatar
java  
武汉红喜 已提交
7 8 9
/**
 * @author shenhongxi 2019/8/11
 */
武汉红喜's avatar
武汉红喜 已提交
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
public class ExchangerTest {
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newCachedThreadPool();
        final Exchanger<String> exchanger = new Exchanger<String>();
        executorService.execute(() -> {
            try {
                String data1 = "zxx";
                System.out.println("线程" + Thread.currentThread().getName()
                        + "正在把数据" + data1 + "换出去");
                Thread.sleep((long) (Math.random() * 10000));
                String data2 = exchanger.exchange(data1);
                System.out.println("线程" + Thread.currentThread().getName()
                        + "换回的数据为" + data2);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
        executorService.execute(() -> {
            try {
                String data1 = "lhm";
                System.out.println("线程" + Thread.currentThread().getName()
                        + "正在把数据" + data1 + "换出去");
                Thread.sleep((long) (Math.random() * 10000));
                String data2 = exchanger.exchange(data1);
                System.out.println("线程" + Thread.currentThread().getName()
                        + "换回的数据为" + data2);
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }
}