Exchanger功能:当一个线程运行到exchange()方法时会阻塞,另一个线程运行到exchange()时,二者交换数据,然后执行后面的程序。在实际项目中使用场景很少,几乎不被使用,大家了解即可!
public static void main(String[] args) {
final Exchanger<Integer> exchanger = new Exchanger<Integer>();
for (int i = 0; i < 10; i++) {
final Integer num = i;
new Thread() {
public void run() {
System.*out*.println("我是线程:Thread_" + this.getName() + "我的数据是:" + num);
try {
Integer exchangeNum = exchanger.exchange(num);
Thread.*sleep*(1000);
System.*out*.println("我是线程:Thread_" + this.getName() + "我原先的数据为:" + num + " , 交换后的数据为:" + exchangeNum);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
}