1 Exchanger使用案例
public class ExchangerDemo {
public static void main(String[] args) {
Exchanger<Object> exchanger = new Exchanger<>();
new Thread(() -> {
Object object = new Object();
System.out.println(Thread.currentThread().getName() + "创建的对象是" + object);
try {
object = exchanger.exchange(object);
System.out.println(Thread.currentThread().getName() + "交换后得到的对象是" + object);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "线程1").start();
new Thread(() -> {
Object object = new Object();
System.out.println(Thread.currentThread().getName() + "创建的对象是" + object);
try {
TimeUnit.SECONDS.sleep(2);
object = exchanger.exchange(object);
System.out.println(Thread.currentThread().getName() + "交换后得到的对象是" + object);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "线程2").start();
}
}
结果
线程1创建的对象是java.lang.Object@2f992f4f
线程2创建的对象是java.lang.Object@42c40a13
线程2交换后得到的对象是java.lang.Object@2f992f4f
线程1交换后得到的对象是java.lang.Object@42c40a13
网友评论