码迷,mamicode.com
首页 > 编程语言 > 详细

java5 Exchanger数据交换

时间:2015-05-18 18:08:04      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:

用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。

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换回的数据为‘张三‘

  

java5 Exchanger数据交换

标签:

原文地址:http://www.cnblogs.com/linjiqin/p/4512155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!