首页 > 编程语言 > 详细

java线程数据交换Exchanger

时间:2017-01-15 00:34:12      阅读:234      评论:0      收藏:0      [点我收藏+]

两个线程都等到交换函数才能完成交换数据操作,代码如下:

package threadLock;

import java.util.Random;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class ExchangerTest {

    public static void main(String[] args) {
        final Exchanger<String> ex = new Exchanger<String>();
        ExecutorService service = Executors.newCachedThreadPool();
        service.execute(new  Runnable() {
            public void run() {
                String data1 = "5555";
                System.out.println("线程" + Thread.currentThread().getName() + "正在把" + "\"" + data1 + "\"交换出去" );
                try {
                    Thread.sleep(new Random().nextInt(1000));
                    String data2 = ex.exchange(data1);
                    System.out.println("线程" + Thread.currentThread().getName() + "交换后的数据为\"" + data2 + "\"");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        service.execute(new Runnable() {
            
            @Override
            public void run() {
                String data1 = "gghhh";
                System.out.println("线程" + Thread.currentThread().getName() + "正在把" + "\"" + data1 + "\"交换出去" );
                try {
                    Thread.sleep(new Random().nextInt(1000));
                    String data2 = ex.exchange(data1);
                    System.out.println("线程" + Thread.currentThread().getName() + "交换后的数据为\"" + data2 + "\"");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        
        service.shutdown();
    }
}

 

java线程数据交换Exchanger

原文:http://www.cnblogs.com/zhouquan-1992-04-06/p/6286325.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!