版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、并发队列实战及原理解析,讲师介绍,荀彧,北京大学博士 担任一线互联网公司技术总监 参与GitHub多个Java开源软件研发 熟悉Java生态体系框架 主导200+节点大数据平台建设,基本概念介绍/DIY 并发/阻塞队列,目录,高性能并发队列讨论,JDK阻塞队列实战与原理分析,Why BlockingQueue?,应用场景广 简单:使用 复杂:高性能实现 熟悉并发编程 面试也常见,What is a Queue?,Queue: 一种支持先进先出(FIFO)的线性数据结构,Java Queue,Thread-safe Queue,Thread-Safe Queue: 多线程安全的Queue,Thr
2、ead-safe Queue - DIY,直接加锁 add/offer/poll/remove ConcurrentLinkedQueue 基于链接节点的无界线程安全队列 非阻塞算法 基于CAS的方式来实现,BlockingQueue,BlockingQueue:一个支持两个附加操作的队列 在队列为空时,获取元素的线程会等待队列变为非空 当队列满时,存储元素的线程会等待队列可用,BlockQueue - DIY,使用 Synchronized/wait/notify/notifyAll 使用显示锁Lock 1 lock +2 condition variables,Lock ,Java Blo
3、ckingQueue,Java BlockingQueue,Java BlockingQueue,Java BlockingDeque,BlockingQueue,BlockingQueue ArrayBlockingQueue: 数组+锁实现 LinkedBlockingQueue: 链表+锁实现 PriorityBlockingQueue: 堆 + 锁 DelayQueue:PriorityQueue + 锁 PriorityQueue: Heap = 完全二叉树 + 特性(小根堆:根比儿子小, 大根堆: 。),SynchronousQueue,SynchronousQueue,Synch
4、ronousQueue,基本概念介绍/DIY 并发/阻塞队列,目录,高性能并发队列讨论,JDK阻塞队列实战与原理分析,队列的性能问题,Linked list is the EVIL of performance 在head, tail和size三个变量的写冲突 put/take和offer/poll上的大锁 GC问题,锁的性能损耗,SingleWriterPrinciple(单写原则),若只有一个线程对资源进行写操作,无需CPU浪费管理资源争夺或上下文切换 多个线程如果同时写同一个资源,必有争夺,就需要用锁或乐观锁等堵塞方法 使用非阻塞:CAS, 一个变量递增500,000,000次所需时间,
5、Cpu Cache层次,Cache Line,1,3,5,CPU Core1,1,2,3,4,5,6,Bus,Cache,Memory,Cache line,Cache line,Cache line,2,4,6,CPU Core 2,1,2,3,4,5,6,Cache Miss,Cache miss cost Demo,False Sharing(伪共享),1,3,5,CPU Core1 (写1),1,2,3,4,5,6,Bus,Cache,Memory,Cache line,Cache line,Cache line,2,4,6,1,7,11,CPU Core 2 (读2),2,8,12,
6、Invalidate Cache,False Sharing(伪共享),False Sharing(伪共享),Object Headers (12bytes),takeIndex(4bytes),putIndex(4bytes),count(4bytes),False Sharing(伪共享),Cache line N+1,CPU Core1,Cache line N,对象头,takeIndex,putIndex,count,Cache line N+1,CPU Core2,Cache line N,对象头,takeIndex,putIndex,count,生产者线程写putIndex,消费者线程读takeIndex,Invalidate Cache,False Sharing(伪共享),False Sharing(伪共享),解决False Sharing的方法:填充(Padding) Field padding within class Field padding across class hierarchy Field padding with array Contended Jav
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年交通安全事故责任保险培训
- 关于二战考题的题目及答案
- 心梗护理科研方法
- 循证护理最佳实践
- 家属职责履行承诺书7篇
- 2024-2025学年度河北外国语学院单招数学练习题完美版附答案详解
- 2024-2025学年度公务员考试《常识》高分题库【夺冠】附答案详解
- 2024-2025学年度冶金工业技能鉴定每日一练试卷附参考答案详解(考试直接用)
- 2024-2025学年度河北省单招考试一类 《文化素质数学》考前冲刺测试卷【夺冠】附答案详解
- 诚信企业信誉承诺书范文5篇
- 《数智时代下的供应链管理:理论与实践》课件 第1-7章 理解供应链- 供应链经典的生产计划
- 知情同意告知培训
- 中药饮片培训课件
- 施工单位商务经理培训
- 病房规范化管理
- 温通刮痧技术操作流程图及考核标准
- 2025年安徽职业技术学院单招职业适应性考试题库含答案
- 2025年黑龙江林业职业技术学院单招职业技能测试题库含答案
- DBJT45-032-2016 CPS防水密封膏施工技术规程
- 2025年度光伏电站运维服务合同范本
- 主题13人类面临的主要环境问题课件中华地图版高中地理必修二
评论
0/150
提交评论