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

来源:互联网 发布:流体热力学软件 编辑:程序博客网 时间:2024/04/30 08:18
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();
}
}
});
}


}
0 0
原创粉丝点击