您的位置:首页 > 编程语言 > Java开发

java的Exchanger 两个线程可以交换对象Demo

2017-09-06 14:32 369 查看
import java.util.concurrent.Exchanger;

public class ExchangerDemo {
public static void main(String[] args) {
Exchanger exchanger = new Exchanger();

ExchangerRunnable exchangerRunnable1 = new ExchangerRunnable(exchanger, "A");

ExchangerRunnable exchangerRunnable2 = new ExchangerRunnable(exchanger, "B");

new Thread(exchangerRunnable1).start();
new Thread(exchangerRunnable2).start();
}
}

import java.util.concurrent.Exchanger;

public class ExchangerRunnable implements Runnable {

Exchanger exchanger = null;
Object object = null;

public ExchangerRunnable(Exchanger exchanger, Object object) {
this.exchanger = exchanger;
this.object = object;
}

public void run() {
try {
Object previous = this.object;

this.object = this.exchanger.exchange(this.object);
System.out.println(Thread.currentThread().getName() + " exchanged " + previous + " for " + this.object);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: