目标:两个线程进行数据交换

exchange

  • exchange只能用于两个线程进行数据交换,它的交换速率是高效的
  • exchanger.exchange(object obj):这个方法会阻塞,直到另一个线程也同样调用这个方法进行数据交换,当然也可以使用timeout避免阻塞过长时间。

代码实现:

package com.miracle.study.concurrent;import java.util.concurrent.Exchanger;/*** @author Miracle* @date 2021/4/14 17:47*/
public class ExchangeTest {public static void main(String[] args) throws InterruptedException {Exchanger exchanger = new Exchanger();new Thread(() ->{var data = "test01";String exchange = null;try {exchange = (String) exchanger.exchange(data);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() + ":" + data);System.out.println(Thread.currentThread() + ":" + exchange);}).start();new Thread(() ->{var data = "test02";String exchange = null;try {exchange = (String) exchanger.exchange(data);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread() + ":" + data);System.out.println(Thread.currentThread() + ":" + exchange);}).start();Thread.sleep(1000);}
}

Java并发练习:exchange简单使用相关推荐

  1. Java并发编程-Exchange

    1.简介 Exchange位于java.util.concurrent包下面,主要是用于线程之间数据交换的工具类,经常用于管道设计和遗传算法中.Exchange提供了一个同步点,在这个同步点上,线程完 ...

  2. exchange java对象,【原】Java并发程序的一个应用Exchanger的实例

    [原]Java并发程序的一个使用Exchanger的实例 今天看了些Exchanger的资料,有个喝水的例子不错.我这里细化了以下,并得到实现. 思路: 有一个Drinker和一个Waiter,有两个 ...

  3. Java项目中高并发问题的简单解决方案

    Java项目中高并发问题的简单解决方案 1.尽量使用缓存技术来做.用户缓存,页面缓存等一切缓存,使用特定的机制进行刷新.利用消耗内存空间来换取用户的效率,同时减少数据库的访问次数. 2.把数据库的查询 ...

  4. [Java 并发] Java并发编程实践 思维导图 - 第一章 简单介绍

    阅读<Java并发编程实践>一书后整理的思维导图.

  5. Java并发编程-并发工具包(java.util.concurrent)使用指南(全)

    1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Ja ...

  6. Java并发编程-并发工具包java.util.concurrent使用指南

    译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurren ...

  7. java并发实战编程pdf_「原创」Java并发编程系列25 | 交换器Exchanger

    2020年Java面试题库连载中 [000期]Java最全面试题库思维导图 [001期]JavaSE面试题(一):面向对象 [002期]JavaSE面试题(二):基本数据类型与访问修饰符 [003期] ...

  8. Java并发编程面试题(2020最新版)

    转载自  Java并发编程面试题(2020最新版) 基础知识 并发编程的优缺点 为什么要使用并发编程(并发编程的优点) 充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到 ...

  9. 和朱晔一起复习Java并发(五):并发容器和同步器

    和朱晔一起复习Java并发(五):并发容器和同步器 本节我们先会来复习一下java.util.concurrent下面的一些并发容器,然后再会来简单看一下各种同步器. ConcurrentHashMa ...

  10. 《Java并发编程的艺术》笔记

    <Java并发编程的艺术>笔记 第1章 并发编程的挑战 1.1 上下文切换 CPU通过时间片分配算法来循环执行任务,任务从保存到再加载的过程就是一次上下文切换. 减少上下文切换的方法有4种 ...

最新文章

  1. php orm url,PHP ORM使用之
  2. 报表移动端app如何实现页面自适应?
  3. mac 完全卸载mysql
  4. 修改线程的名称 java 1615387415
  5. ASP.NET企业开发框架IsLine FrameWork系列之三--七种武器
  6. 吴恩达深度学习2.2笔记_Improving Deep Neural Networks_优化算法
  7. PlantUML in a nutshell(官方文档)
  8. Sudoku Solver
  9. html ios视频播放器,iOS 视频播放器(整理)
  10. 北理慕课——Python文件和数据格式化
  11. 【资料总结】html开发小实例
  12. python爬取b站所有视频_如何快速爬取B站全站视频信息
  13. 公告栏模板php代码,如何实现手机端公告栏显示
  14. 圣诞表白html,圣诞节表白语 圣诞节表白情话
  15. 众多的.ts文件、.key文件、.m3u8文件,合并成一个完整的mp4格式的视频
  16. 搜狗输入法自定义短语使用小技巧
  17. 活体检测的几种手段分析
  18. PHP代码审计--百家CMS4.1.4项目实战(下)
  19. antDesignPro线上刷新404 和 liunx部署使用mock数据 umi-serve + pm2
  20. ie 和火狐兼容问题

热门文章

  1. 怎么用Python爬取抖音小视频? 资深程序员都这样爬取的(附源码)
  2. 计算机编程的英语单词大全,计算机编程常用英语单词
  3. linux中添加中文输入法(汉语拼音)
  4. Python 玩转数据 19 - 数据操作 正则表达式 Regular Expressions 搜索模式匹配
  5. 守护线程Deamon
  6. 旋转矩阵是正交矩阵与伴随性质的证明
  7. (译)Xposed Helpers
  8. 发布uubox.net客户端工具及其源代码
  9. simulink中不能改名_王者荣耀:万格改名教学,空白名、重复名、个性符号名改法!...
  10. 追梦App系列博客——后端架构篇