应用场景: 假设定个外卖,外卖小哥约定取餐地点,我们拿着钱去换订的餐
Exchager: 两个线程,在同一点(阻塞点),交换数据
/**
* @author: Syliu
* @Date: 2018/6/2 15:24
* @Description:
* 假设定个外卖,外卖小哥约定取餐地点,我们拿着钱去换订的餐
* Exchager: 两个线程,在同一点(阻塞点),交换数据
*/
public class ExchagerDemo {
public static void main(String[] args) {
final Exchanger<String> exchanger = new Exchanger<>();
ExecutorService executor = Executors.newCachedThreadPool();
executor.submit(()->{
final String message = exchanger.exchange("肯德基");
System.out.println("快递员拿着肯德基交换了"+message+"钱");
return null;
});
executor.submit(()->{
final String message = exchanger.exchange("30元");
System.out.println("我们拿了30元换回"+message);
return null;
});
executor.shutdown();
}
}
注意:这里只能两个线程进行交换