- volatile
- 类型修饰符,告诉jvm该变量在寄存器/工作内存中值是不确定的
- 没有原子性
- 不会造成线程阻塞
- 读性能几乎不变,写稍慢,因为插入内存屏障来保证不乱序执行
- 对所有线程可见(可见性,线程的修改对其它线程可见)
- 跳过cpu cache,新值立即同步到内存, 使用前从内存刷新
- 禁止编译器指令重排序优化
- synchronized
- 锁当前变量、方法、类,只有当前线程可用
- 保证可见性和原子性
- 方法修饰
- 开放性
修饰符 当前类 同包 子类 其他包 public √ √ √ √ protected √ √ √ 无 √ √ private √ - default修饰接口默认方法(虚方法)
- 开放性