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

多线程编程13-----Exchanger同步工具类实现两线程数据交换

2014-09-01 16:20 639 查看
package zhu.suo;

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 service= Executors.newCachedThreadPool();

final Exchanger exchanger = new Exchanger();

service.execute(new Runnable() {

public void run() {

String data1="zz";

try {

System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");

Thread.sleep((long)Math.random()*1000);

String data2 = (String) exchanger.exchange(data1);

System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

service.execute(new Runnable() {

public void run() {

String data1="xx";

try {

System.out.println("线程"+Thread.currentThread().getName()+"准备把"+data1+"换取出");

Thread.sleep((long)Math.random()*1000);

String data2 = (String) exchanger.exchange(data1);

System.out.println("线程"+Thread.currentThread().getName()+"换回的数据为"+data2);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: