Java 7与伪共享的新仇旧恨
JAVA 共享
2023-09-14 08:56:52 时间
用以上这种办法我获得了和上一篇博客里提到的相近的性能,读者可以把PaddedAtomicLong里面那行填充物注释掉再跑测试看看效果。
我想我们大家都有权去跟Oracle投诉,让他们在JDK里默认加入缓存行对齐的函数或者是被填充好的原子类型,这和其他一些底层改变会让Java成为一门真真正正的并发编程语言。我们一直以来不断的在听到他们讲多核时代正在到来,但是我要说的是在这方面Java需要快点赶上来。
「Java并发编程实战」之对象的共享 本系列博客是对《Java并发编程实战》的一点总结,本篇主要讲解以下几个内容,内容会比较枯燥。可能大家看标题不能能直观的感受出到底什么意思,这就是专业术语,哈哈,解释下,术语(terminology)是在特定学科领域用来表示概念的称谓的集合,在我国又称为名词或科技名词(不同于语法学中的名词)。术语是通过语音或文字来表达或限定科学概念的约定性语言符号,是思想和认识交流的工具。我就用白话文来给大家解释下这些术语。
【Java并发编程系列5】对象的共享 在没有Java相关并发知识的前提下,第一次看这本书《Java并发编程实战》,其实有些看不太懂,因为里面的很多知识讲的比较抽象,比如可见性、volatile、final等讲的其实都不深入,所以导致自己理解的也很片面。后来就先专门看了“Java内存模型”相关的知识,再对相关知识理解起来,就要深入一些,所以才有了前面写的4篇关于“Java内存模型”相关的文章。
Java 中的伪共享详解及解决方案 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。 1. 什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。
从Java视角理解系统结构(三)伪共享 从Java视角理解系统结构连载, 关注我的微博(链接)了解最新动态 从我的前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题.
ali清英 方腾飞,花名清英,英文名kiral,并发编程网创始人,支付宝技术专家,《Java并发编程的艺术》作者。
相关文章
- Java Magic. Part 4: sun.misc.Unsafe
- 从Java视角理解系统结构(三)伪共享
- Java反射异常:java.lang.NoSuchFieldException
- Java实现 LeetCode 542 01 矩阵(暴力大法,正反便利)
- Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
- Java实现 LeetCode 236 二叉树的最近公共祖先
- Java实现 LeetCode 1227 飞机座位分配概率
- Java实现 LeetCode 145 二叉树的后序遍历
- Java实现 蓝桥杯 算法训练 1的个数
- Java实现 洛谷 P2118 比例简化
- java实现海盗比酒量
- Java实现第十届蓝桥杯数的分解
- Java实现夺冠概率模拟
- Java实现John's trip(约翰的小汽车)
- Java实现 蓝桥杯 算法提高 周期字串
- RDD java API使用
- 【JAVA】Java 异常中e的getMessage()和toString()方法的异同
- linux系统部署Java程序获取ip时报Caused by: java.net.UnknownHostException: XXXXXXXXXX: XXXXXXXXXX: Name or service not known
- java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器
- Java — java.lang.NullPointerException - 如何处理空指针异常
- 【java】Java中-> 是什么意思?
- 【java】Java ArrayList
- JAVA中的NAN
- 【华为OD机试 2023】优雅子数组(C++ Java JavaScript Python)
- 解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题
- 【技术选型】Java 定时任务
- JAVA开发讲义(一)-Java的自白