源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-08-05 01:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java多线程编程之使用Exchanger数据交换实例
用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人将一直等待第二个人拿着数据到来时,才能彼此交换数据。
[u]复制代码[/u] 代码如下:
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){                                      }                          }          });        } }
返回结果:
[u]复制代码[/u] 代码如下:
线程pool-1-thread-1正在把数据'张三'换出去 线程pool-1-thread-2正在把数据'李四'换出去 线程pool-1-thread-1换回的数据为'李四' 线程pool-1-thread-2换回的数据为'张三'
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部