java--jmm知识
Posted Valentino的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--jmm知识相关的知识,希望对你有一定的参考价值。
volatile :保证可见性,但保证不了原子性。
保证不了原子性,所以在遇到数据并发处理的情况无法保证数据不一致,线程不安全。
dcl:双重检锁机制
public class Singleton { private static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(singleton == null){ // 1 synchronized (Singleton.class){ // 2 if(singleton == null){ // 3 singleton = new Singleton(); // 4 } } } return singleton; } }
- 锁前检查,如果检查第一个singleton不为null,则不需要执行下面的加锁动作,极大提高了程序的性能;
- 锁后检查,保证当第一个获取锁的线程创建完成后singleton对象后,其他线程即使拿到锁后,也不会创建对象;
以上是关于java--jmm知识的主要内容,如果未能解决你的问题,请参考以下文章
Flutterflutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘(代码片段