• 技术文章 >Java >java教程

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

    高洛峰高洛峰2017-01-11 15:21:44原创616
    用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。

    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数据交换实例相关文章请关注PHP中文网!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java删除文件、目录及目录下所有文件的方法实例 下一篇:Java利用剪贴板实现交换程序间数据的方法
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 归纳整理Java线程面试题• Java归纳整理之IO流原理及流的分类• 实例介绍Java基于quasar实现协程池• 一文带你认识Java栈和队列• 一文掌握Java8新特性Stream流的概念和使用
    1/1

    PHP中文网