Exchanger应用

2019-02-28  本文已影响1人  sunpy

场景

两支球队,相互交易球员,一个交易出勒布朗詹姆斯,一个交易出斯蒂芬库里。

实现

public class ExchangerTest {

    private static final Exchanger<String> exchanger = new Exchanger<String>();
    
    public static void main(String[] args) {
        ThreadPoolExecutor tpe = new ThreadPoolExecutor(2, 
                2, 
                15, 
                TimeUnit.SECONDS, 
                new ArrayBlockingQueue<Runnable>(10));
        tpe.allowCoreThreadTimeOut(true);
        
        tpe.execute(new Runnable() {

            @Override
            public void run() {
                try {
                    String outputStr = " 勒布朗詹姆斯";
                    String inputStr = exchanger.exchange(outputStr);
                    System.out.println(Thread.currentThread().getName() + " 交易进来" + inputStr);
                    System.out.println(Thread.currentThread().getName() + " 交易出去" + outputStr);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        
        tpe.execute(new Runnable() {

            @Override
            public void run() {
                try {
                    String outputStr = " 斯蒂芬库里";
                    String inputStr = exchanger.exchange(outputStr);
                    System.out.println(Thread.currentThread().getName() + " 交易进来" + inputStr);
                    System.out.println(Thread.currentThread().getName() + " 交易出去" + outputStr);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
    }
}

结果:

pool-1-thread-1 交易进来 斯蒂芬库里
pool-1-thread-2 交易进来 勒布朗詹姆斯
pool-1-thread-1 交易出去 勒布朗詹姆斯
pool-1-thread-2 交易出去 斯蒂芬库里
上一篇下一篇

猜你喜欢

热点阅读