javaone

当我查看今天的日程安排时,我感到有些惊讶,并指出我目前计划今天参加的所有会议都在希尔顿举行。 当我意识到JavaOne演示文稿中大约有一半是在希尔顿酒店中并且似乎按路线大致定位时,这变得有些不足为奇了。

Tobias Lindaaker ( 新技术 )的演讲“原子数据结构如何工作?” 在希尔顿的金门大桥3/4/5会议室区域举行。 Lindaaker自从最初提交摘要以来就更改了演讲标题 。 摘要的标题(以及会议材料中列出的标题)是“原子数据结构如何工作?”,但他已将其重命名为“非阻塞数据结构如何工作?”。

Lindaaker解释说,“原子”来自希腊语,意思是“不可分割的”。 他解释说,“无锁数据结构”是“在对数据结构执行操作(读或写)时不会阻塞任何线程的数据结构”。 他说,一个人要尽可能避免“ 等待旋转 ”。

Lindaaker谈到了同步区域。 他说,这些地区“通过代码创建了序列化的路径”和“保证安全的发布”。 他将“安全发布”定义为“退出同步[block]之前编写的所有内容”和“保证在进入同步[block]时可见”。 他的项目符号之一说,“ 可变字段使您无需序列化即可安全地发布。” Lindaaker在他的“ volatile字段”幻灯片中更加关注volatile关键字修饰符。

幻灯片“什么是内存障碍?” 提供了内存屏障概念的简单直观表示。

Lindaaker在他的幻灯片“原子更新”中指出,访问原子引用的最简单方法是使用java.util.concurrent.atomic 。 AtomicReference <V> 。 Lindakker提供了使用杯垫的物理演示,以说明compareAndSet (如果条件有利地匹配,则设置一个值)与getAndSet之间的区别 。 (设置新值将返回旧值)。

Lindaaker更喜欢java.util.concurrent.atomic.AtomicReferenceFieldUpdater <T,V>,因为它的“内存开销较低”(“对象标头较少”)和“更好的内存局部性”(“无引用间接”)。

Lindaaker解释说,基于阵列的队列确实会阻塞(有时由于有限的硬件资源而需要限制工作量时会有所裨益),而链接队列不会阻塞。 Lindaaker使用超市队列作为差异的示例。 在基于链接的队列中,您总是站在队列中前面同一客户的后面。 在基于数组的队列中,您始终保持在同一位置。 有界队列“经常会表现更好”,但满时将阻塞。

本演讲的主题之一是学习新想法,然后逐一进行进一步研究的想法。 Lindaaker建议受众成员查看JDK的代码,以查看一些令人印象深刻的代码示例。

Lindaaker引用LMAX ( 伦敦多资产交易所 ) Disruptor作为“环形缓冲区”(“带有读标记和写标记的阵列”)的示例。 他说,“读者争夺阅读标记,作家争夺书写标记”,并强调了这样的结果,“对于单一读者/单一作家,没有争执。” Disruptor页面将Disruptor描述为“高性能线程间消息传递库”。

Lindaaker表示java.util.concurrent.ConcurrentHashMap是一个不错的常规选择,但是对于他的演示文稿中的讨论并不十分令人兴奋。 他说,通过适当的调整,它“可以在当前的商用硬件上很好地扩展”(少于100个CPU)。

Neo Technology提供了非关系的数据库实现( Neo4j )( 图形数据库 )。 Lindaaker将Neo Technology基于图的数据库描述为“将数据存储为节点以及节点之间的关系”。

别忘了分享!

参考: JavaOne 2012:非阻塞数据结构如何工作? 由我们的JCG合作伙伴 Dustin Marx在“ 实际事件启发”博客中获得。

翻译自: https://www.javacodegeeks.com/2012/10/javaone-2012-how-do-non-blocking-data.html

javaone

javaone_JavaOne 2012:非阻塞数据结构如何工作?相关推荐

  1. JavaOne 2012:非阻塞数据结构如何工作?

    当我查看今天的日程安排时,我感到有些惊讶,并指出我目前计划今天参加的所有会议都在希尔顿举行. 当我意识到JavaOne演示文稿中大约有一半是在希尔顿酒店中并且似乎按路线大致定位时,这变得有些不足为奇了 ...

  2. javaone_JavaOne 2012覆盖率

    javaone 年度Java盛会JavaOne于9月30日至10月4日在旧金山举行. 进行了许多有趣的演示,再次证明了健康的Java生态系统. Java Code Geeks未能参加会议,但是我们的J ...

  3. Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)

    简介: Java™ 5.0 第一次让使用 Java 语言开发非阻塞算法成为可能,java.util.concurrent 包充分地利用了这个功能.非阻塞算法属于并发算法,它们可以安全地派生它们的线程, ...

  4. Nginx的异步非阻塞

    转载地址:https://blog.csdn.net/dutsoft/article/details/55224755 同步与异步 同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果 ...

  5. nginx异步非阻塞 解析

    同步与异步的理解 同步与异步的重点在消息通知的方式上,也就是调用结果通知的方式. 同步:当一个同步调用发出去后,调用者要一直等待调用结果的通知后,才能进行后续的执行. 异步:当一个异步调用发出去后,调 ...

  6. Java网络编程------IO模型的同步/异步/阻塞/非阻塞(1)

    IO模型的同步/异步/阻塞/非阻塞 一.同步/异步/阻塞/非阻塞 1.同步和异步 2.阻塞和非阻塞 3.同步.异步和阻塞.非阻塞组合 二.IO 1.I/O 2.阻塞IO和非阻塞IO 3.同步IO和同步 ...

  7. [架构之路-38]:目标系统 - 系统软件 - Linux OS硬件设备驱动必须熟悉的六大工作机制之(并发与互斥、阻塞与非阻塞、异步通知)

    目录 前言: 第4章 内核程序并发与互斥机制 4.1 内核程序优先级机制 4.2 内核线程状态:并发与竞争 4.3 内核锁的类型 4.4 乱序问题 第5章 阻塞与非阻塞机制 5.1 什么是阻塞问题 5 ...

  8. JAVA线程池_并发队列工作笔记0001---认识阻塞队列_非阻塞队列

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 注意这个ConcurrentLinkedQueue这个是个非阻塞队列, 这个队列是没有长度限制的, ...

  9. 阻塞与非阻塞个人小结

    1.connect函数响应中断返回后仍然回到函数的调用.        实践证明,对于一个非阻塞的socket,如果在调用connect函数时,如果发生中断,这函数响应中断,但当中断返回时,继续con ...

最新文章

  1. 安装了email模块还是报错_Git windows安装及使用教程
  2. 在CentOS上部署基于dnx/coreclr的ASP.NET 5应用程序
  3. python 为什么用%格式化_Python中应该使用%还是format来格式化字符串?
  4. android源码阅读笔记1-配置源码路径/阅读源码方法讨论
  5. mac下的tensorflow报错提示没有models库
  6. 在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection
  7. oracle外表日期,三步教会您掌握oracle外表(external table)
  8. 1063. 计算谱半径(20)
  9. 脚本启动慢_Linux 常用运维脚本,建议收藏
  10. 流媒体技术的国内外动态
  11. 设计灵感|化繁杂为明晰!如何把信息类海报做得好看?
  12. C# COM Object for Use In JavaScript / HTML, Including Event Handling(转载)
  13. 33款创意的二维码名片设计作品欣赏
  14. 数学分析原理 定理 6.8
  15. 关于Universal-Image-Loader加载同一张图只成功一张的问题
  16. 证券交易1-交易系统简介
  17. 递归解决字符串逆序输出
  18. nginx 安装到Java代码上传图片利用ftp过程遇到的问题总结
  19. 08:判断一个数能否同时被3和5整除
  20. OAuth2实现安全登录(一)环境配置

热门文章

  1. 大型网站架构利器-CDN技术
  2. Linux Tomcat安装
  3. 不管什么事,只要用心做,总不会太差!
  4. 2020蓝桥杯省赛---java---B---2(指数计算)
  5. Android碎片Fragment详讲(1)
  6. ps查看所有php进程,ps命令就是最基本进程查看命令
  7. 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
  8. java中线程死锁及避免_如何避免Java线程中的死锁?
  9. jvm jstat_使用jstat的JVM统计信息
  10. jbpm 和 drools_jBPM和Drools工作台中的用户和组管理