您好,欢迎访问一九零五行业门户网

Java多线程编程之使用Exchanger数据交换实例

用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
package com.ljq.test.thread; import java.util.concurrent.exchanger; import java.util.concurrent.executorservice; import java.util.concurrent.executors; public class exchangertest { public static void main(string[] args) { executorservice service = executors.newcachedthreadpool(); final exchanger exchanger = new exchanger(); service.execute(new runnable(){ public void run() { try { string data1 = "张三"; system.out.println("线程" + thread.currentthread().getname() + "正在把数据'" + data1 +"'换出去"); thread.sleep((long)(math.random()*10000)); string data2 = (string)exchanger.exchange(data1); system.out.println("线程" + thread.currentthread().getname() + "换回的数据为'" + data2+"'"); }catch(exception e){ } } }); service.execute(new runnable(){ public void run() { try { string data1 = "李四"; system.out.println("线程" + thread.currentthread().getname() + "正在把数据'" + data1 +"'换出去"); thread.sleep((long)(math.random()*10000)); string data2 = (string)exchanger.exchange(data1); system.out.println("线程" + thread.currentthread().getname() + "换回的数据为'" + data2 + "'"); }catch(exception e){ } } }); } }
返回结果:
线程pool-1-thread-1正在把数据'张三'换出去 线程pool-1-thread-2正在把数据'李四'换出去 线程pool-1-thread-1换回的数据为'李四' 线程pool-1-thread-2换回的数据为'张三'
更多java多线程编程之使用exchanger数据交换实例。
其它类似信息

推荐信息