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

网友投稿 225 2023-08-02


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 {             

 

                 &kmtWmOORSnbsp;  String data1 = "张三";

                    System.out.println("线程" + Thread.currentThread().getName() + "正在把数据'" + data1 +"'换出去");

                    Thread.sleephttp://((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换回的数据为'张三'


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:二层交换机配置步骤:流程详解与常用方法
下一篇:Java多线程编程之访问共享对象和数据的方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~