- 博客(3)
- 资源 (8)
- 收藏
- 关注
原创 Java 内存模型的总结
看了几遍《Java 并发编程的艺术》,对Java内存模型JMM的理解加深了不少,记录一下自己的理解吧。概念:java线程之间的通信由JMM来控制,决定一个线程对共享变量的修改何时对另外一个线程可见,抽象的说:共享变量存储在主内存中,而每个线程由一份本地内存,存储了共享变量的副本。如下一张图:JMM如何控制呢。答案就是JMM有一条规则保证,这套规则就叫Happens-before规则...
2019-01-29 14:04:02 188
原创 final 和 volatile的关系
之前的一片文章final 变量可变欠下了一个技术债,就是反射修改final变量值,到最后调用了Unsafe.putObjectVolatile方法,看方法名字中包含了"Volatile",那么推论Volatile和final有渊源,或者说在内存语义上有关联。那么这种关联是什么呢,下面来分析一下。先我们看一些概念。volatile变量写的概念如下:在Java 并发编程这本书中,写到如果对一个vo...
2019-01-24 10:05:48 1917
原创 final 变量可以修改
在之前java 开发的认知中,final 修饰的变量一旦初始化,就不能被修改,如果是类变量,只能在构造方法中初始化,在其他方法中如果初始化,编译器也会报错,IDE也会拒绝编译。如下:这个没问题,这是所有开发者的共识,但是如果遇到了反射,会有些不同,如下:public class OneCity { private final ArrayList<String> name...
2019-01-23 16:19:16 11246
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人