package com.tkp.lock;
import java.util.concurrent.Exchanger;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public class ExchangerDemo {
public static void main(String[] args) {
Exchanger<String> exchanger = new Exchanger<>();
new Thread(new BoyThread(exchanger), "张三丰").start();
new Thread(new GirlThread(exchanger), "李小花").start();
}
}
class BoyThread implements Runnable{
private Exchanger<String> exchanger;
public BoyThread(Exchanger<String> exchanger) {
this.exchanger = exchanger;
}
@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(5);
String str = exchanger.exchange("礼物A");
System.out.println(Thread.currentThread().getName() +"收到:"+str);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class GirlThread implements Runnable{
Exchanger<String> exchanger;
public GirlThread(Exchanger<String> exchanger) {
this.exchanger = exchanger;
}
@Override
public void run() {
try {
String str = exchanger.exchange("礼物B");
System.out.println(Thread.currentThread().getName() + "收到:"+str);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}