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 交易出去 斯蒂芬库里