场景
- 绑架案:一手交钱,一手交人
- 校对工作
code
package com.zjy.thread;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExchangerDemo {
public static void main(String[] args){
//使用线程池
ExecutorService threadPool = Executors.newCachedThreadPool();
Exchanger<Object> exchanger = new Exchanger<Object>();
threadPool.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
String thread1 = (String) exchanger.exchange("aaa");
System.out.println("交换完成,我是1,我获取到了"+thread1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
threadPool.execute(new Runnable() {
@Override
public void run() {
try {
//3s 之后 成功同时交换
Thread.sleep(3000);
String thread2 = (String) exchanger.exchange("bbb");
System.out.println("交换完成,我是2,我获取到了"+thread2);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
threadPool.shutdown();
}
}
结果
# 交换完成,我是1,我获取到了bbb
# 交换完成,我是2,我获取到了aaa