// Not quite a no-op; ensures volatile write semantics怎么理解
// Not quite a no-op; ensures volatile write semantics怎么理解
- 只解释一句
自学源码,看到CopyOnWriteArrayList 类里面有这样一条:
一开始觉得很奇怪:
public E set(int index, E element) {final ReentrantLock lock = this.lock;lock.lock();try {Object[] elements = getArray();E oldValue = get(elements, index);if (oldValue != element) {int len = elements.length;Object[] newElements = Arrays.copyOf(elements, len);newElements[index] = element;setArray(newElements);} else {// Not quite a no-op; ensures volatile write semanticssetArray(elements);}return oldValue;} finally {lock.unlock();}}
中间有一段:
} else {// Not quite a no-op; ensures volatile write semanticssetArray(elements);}
只解释一句
为了刷新数据。你细品。
网上查的话,查到一些术语,比如“happens-before”,比较晦涩。
但我转念一想。
/** The array, accessed only via getArray/setArray. */private transient volatile Object[] array;
volatile情景总结一句话就是:几个线程,一个共享数据,其中一个线程动了数据,其余线程能实时更新。
实现的基础是:根据“MESI缓存一致性协议”以及涉及的“总线嗅探原理”。
所以,你就算操作后的值和操作前的值一样,也要做一下
// Not quite a no-op; ensures volatile write semantics怎么理解相关推荐
- Not quite a no-op; ensures volatile write semantics
来源 看java并发编程之美P110提到: 如果指定位置的元素值与新值一样,则为了保证volatile语义,还是需要重新设置array,虽然array的内容并没有改变. 这里只是提到保证volatil ...
- 对Java单例模式 volatile关键字作用的理解
单例模式是程序设计中经常用到的,简单便捷的设计模式,也是很多程序猿对设计模式入门的第一节课.其中最经典的一种写法是: class Singleton {private volatile static ...
- 嵌入式开发中对(*(volatile unsigned long *)) 的理解
一.说明 (*(volatile unsigned long *)) 这个语句对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必 ...
- #define GPBCON (*(volatile unsigned *)0x56000010) 的理解
2019独角兽企业重金招聘Python工程师标准>>> 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使 ...
- Java CopyOnWriteArrayList
Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...
- CopyOnWriteArrayList简介
CopyOnWriteArrayList,写数组的拷贝,支持高效率并发且是线程安全的,读操作无锁的ArrayList.所有可变操作都是通过对底层数组进行一次新的复制来实现. CopyOnWriteAr ...
- happens-before俗解
学习Java并发,到后面总会接触到happens-before偏序关系.初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助.如有不正确之处,欢迎指正. ...
- java并发编程之美-阅读记录5
java并发包中的并发List 5.1CopeOnWriteArrayList 并发包中的并发List只有CopyOnWriteArrayList,该类是一个线程安全的arraylist,对其进行的修 ...
- happens-before通俗理解
原文地址:http://ifeve.com/easy-happens-before/ 学习Java并发,到后面总会接触到happens-before偏序关系.初接触玩意儿简直就是不知所云,下面是经过一 ...
最新文章
- 【Android UI设计与开发】第13期:顶部标题栏(四)自定义ActionBar风格和样式
- 无法想mysql进行插入_mysql 无法插入中文
- 高可用系统设计 | 分布式限流策略:计数器算法、漏桶算法、令牌桶算法
- 一套完整的java程序_编写一个完整的Java Application 程序
- NavMeshAgent 动态加载障碍物
- 函数fun的功能是将s所指字符串_21 函数的简介
- WinCE6.0+ S3C6410 IIC驱动源码学习
- 调查:2013年十大急需的热门IT技能
- ShellServiceObjectDelayLoad注册表键值作用
- 微信小程序上线审核流程
- Java 创建并应用PPT幻灯片母版
- dnspod动态解析linux,NAS折腾记 篇一:五分钟搞定威联通DNSPOD动态域名解析-简单教程+问题解决...
- 【ArcGIS|空间分析】选址分析(为学校选址)
- 自动化测试工程师,自动化测试项目老是误报?怎么解决?(详细总结)
- Tiki靶机(CMS漏洞)
- svchost.exe不停下载
- 微信表情符号写入案件判决
- JAVA表达爱意_520表白日;程序员不会说爱?来一种属于程序员的满满爱意
- EMV中易混淆概念总结
- Charles抓包使用