![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
Yahui_
Java后端开发工程师,python后端开发工程师,主要从事推荐系统服务研发,机器学习初学者
展开
-
volatile的内存语义
1. volatile的用法 volatile用于修饰共享变量,当多线程同时访问一个共享变量时,volatile能保证线程读到的该变量的值一定是最后写入的结果,也就是说volatile保证了变量修改的可见性。这意味着volatile能用于线程间通信。 2. volatile的特性 可见性。对一个volatile的读,一定是对该变量最后写入的结果; 原子性。对任意volatile变量的读/写...原创 2019-03-09 14:49:56 · 159 阅读 · 0 评论 -
final域的内存语义
目录 1. final关键字的语义 2. 如何保证final的语义 1. final关键字的语义 final修饰基本数据类型变量时,该变量的值在初始化后就不可改变了; final修饰引用类型变量时,该变量在初始化后不能再执行赋值操作,也就是改变量指向的内存地址不能再改变,但是该变量所指向的内存中的数据是可以被改变的。 2. 如何保证final的语义 final关键字保证...原创 2019-03-09 16:30:59 · 238 阅读 · 0 评论 -
线程安全的延迟初始化的实现
几个延迟初始化的例子,其中包含非线程安全的和线程安全的,自己可以现在心里判断一下哪些是安全的哪些是不安全的。 下面是用例类: class Instance {} class UnsafeLazyInit { private static Instance instance; public static Instance getInstance() { i...原创 2019-03-15 20:25:23 · 212 阅读 · 0 评论