基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程
1 不可变类的设计
- 成员变量加final:只能读不能改;
- 类名加final:不能被继承;
- 保护性拷贝:都是在内存创建新的对象(副本);
- 包装类:Byte、Short、Long缓存范围-128-127,(享元模式);
- 包装类:Character缓存范围0-127;
- 包装类:Integer默认范围-128-127,最小值不变,最大值可以通过JVM调整改变;
- Boolean直接缓存了true和false;
2 final原理
2.1 设置final 的原理
在putfield指令后面加了写屏障(防止指令重拍,更新到主存),保证了为final修饰成员变量的原子性,不会被两个线程同时访问时,其中一个为空的情况;
2.2 获取final的原理
是去共享的缓存池中找。