import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Exchanger;public class UseExchanger {//两个线程间的数据交换private static Exchanger<HashMap<String,Long>> exchanger = new Exchanger<>();public static void main(String[] args) {new Thread(new Runnable() {@Overridepublic void run() {HashMap<String,Long> mapA = new HashMap<>();mapA.put(Thread.currentThread().getName(),Thread.currentThread().getId());try {mapA = exchanger.exchange(mapA);for (Map.Entry<String,Long> result : mapA.entrySet()){System.out.println("Thread : "+Thread.currentThread().getName()+"map :"+result.getKey());}} catch (InterruptedException e) {e.printStackTrace();}}}).start();new Thread(new Runnable() {@Overridepublic void run() {HashMap<String,Long> mapB = new HashMap<>();mapB.put(Thread.currentThread().getName(),Thread.currentThread().getId());try {mapB = exchanger.exchange(mapB);for (Map.Entry<String,Long> result : mapB.entrySet()){System.out.println("Thread : "+Thread.currentThread().getName()+"map :"+result.getKey());}} catch (InterruptedException e) {e.printStackTrace();}}}).start();}
}

Exchanger 案例相关推荐

  1. java.util.concurrent.Exchanger应用范例与原理浅析--转载

    一.简介    Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据.在本文中我将采取由浅入深的方式来介绍分析这个工具类.首先我们来看看官方的api文档中的叙述: ...

  2. excelexportentity中设置null不显示的方法_一般人不知道的线程间数据交换Exchanger

    线程间的数据共享除了定义一个共享数据然后各个线程去访问这种方式外,还可以使用Exchanger交换数据. 简单案例 首先看看Exchanger的运用,Exchanger最简单的测试代码,如下图: 对应 ...

  3. 【java】Java 中的 Exchanger 线程同步使用方法 线程之间交换数据

    1.概述 转载:https://www.pdai.tech/md/java/thread/java-thread-x-juc-tool-exchanger.html 视频参考:https://www. ...

  4. 并发编程之Exchanger原理与使用

    点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章. 本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 在JUC包中,除了一些常用的或 ...

  5. 【JAVA并发编程专题】Exchanger的理解和使用

    文章目录 一.简介 二.使用案例 一.简介 Exchanger用于两个线程之间进行数据交换,每个线程调用exchage方法到达各自的同步点,当且仅当两个线程都达到同步点的时候,才可以交换信息,否则先到 ...

  6. JUC 工具类之 Exchanger 详解

    一 Exchanger 简介 线程间的数据共享除了定义一个共享数据然后各个线程去访问这种方式外,还可以使用 Exchanger 交换数据. Exchanger--交换器,是 JDK1.5 时引入的一个 ...

  7. java exchanger 应用场景_java多线程系列:Semaphore和Exchanger

    本篇文章将介绍Semaphore和Exchanger这两个并发工具类. Semaphore信号量(英语:Semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值.当线 ...

  8. python 网络编程之Socket通信案例消息发送与接收

    背景 网络编程是python编程中的一项基本技术.本文将实现一个简单的Socket通信案例消息发送与接收 正文 在python中的socket编程的大致流程图如上所示 我们来首先编写客户端的代码: # ...

  9. 2021年大数据ELK(十七):Elasticsearch SQL 订单统计分析案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 订单统计分析案例 一.案例介绍 二.创建索引 三.导入测试数据 四.统计不同支 ...

最新文章

  1. Error: Gradle project sync failed. Please fix your project and try again.
  2. 了解Android Matrix转换
  3. WINCE对USB HOST供电的控制
  4. 在有序但含有空的数组中查找字符串
  5. 新工具上线!只需2步助你轻松学爬虫!
  6. 《UNIX环境高级编程》目录
  7. 锐捷官方提供122套实验题.
  8. 知识选择visual studio 2012 知识笔记
  9. 剑指offer面试题[42]-反转单词顺序VS左旋转字符串
  10. Fastjson 1.2.22-24 反序列化漏洞分析
  11. Day1_HTML_表单标记
  12. JAVA RSA加密解密代码范例(Base64版)
  13. 平面设计完全手册_工业时代的平面设计
  14. 麦克风阵列概述与波束形成—(1) 麦克风阵列概述
  15. 获取计算机主机mac地址的命令有,Mac系统获取远程电脑MAC地址的两种简单方法
  16. Python Couldn‘t find any class folder
  17. 向量场的散度和旋度_矢量场,标量场,散度,梯度,旋度的理解
  18. 伺服驱动器cn1引脚定义_PCI-9014端子板DIN-68S和安川驱动器(SGDV-R90A01A002000)接线图...
  19. html li被挤下去,求助CSS大大页面小化后变形被挤下去了
  20. SRE运维面试相关高频题库

热门文章

  1. 微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss)
  2. PAT-求自定类型元素的最大值(基础函数题)
  3. SpringCloud:注册中心nacos
  4. 免费开源ERP Odoo实施指南 连载一:Odoo概述
  5. 10岁就发布了5款App,受邀WWDC的小男孩长什么样
  6. H5实现android、ios分享页面打开特定app的交互
  7. html调取主机ipv6地址,IPv6地址格式及地址配置方式
  8. 助力“黑科技” 阿里云发布人工智能服务DTPAI
  9. 果园机器人能干什么_24* 果园机器人第二课时教学实录
  10. 根据不同值需求,设置按钮的disabled禁用可用