zoukankan      html  css  js  c++  java
  • Java基础知识

    volatile:java关键字,意为易变的,不稳定的,标识修饰java同步字段,示例:java单利模式

    public class ApplicationCache{
     
       private Map<String, Object> attributeMap;
       // volatile so that JVM out-of-order writes do not happen
       private static volatile ApplicationCache instance;
     
       public static ApplicationCache getInstance(){
          // Checked once
          if(instance == null){
             // Synchronized on Class level lock
             synchronized(ApplicationCache.class){
                // Checked again
                if(instance == null){
                   instance == new ApplicationCache();
                }
             }
          }
          return instance;
       }
     
       private ApplicationCache(){
          attributeMap = createCache(); // Initialize the cache
       }
    }

    我们让instance变量volatile,这样JVM避免了乱序写操作(out-of-order writes)。在对初始作同步时,对instance是否是null检查了两次,这样就避免了两个以上的线程创建多过一个cache的实例。我们也可以同步整个静态方法,但这种做法又太过了,因为我们在初始化之前只会调用一次,之后就不需要再同步了。

  • 相关阅读:
    常见优化函数
    排序算法
    小米编程题
    leetcode 刷题
    beam_search 和 viterbi算法的区别
    快速排序
    vitrebi算法进行分词的案例
    python 进行视频剪辑
    keras实现MobileNet
    HMM、CTC、RNN-T训练时所有alignment的寻找方法
  • 原文地址:https://www.cnblogs.com/xuelu/p/3735216.html
Copyright © 2011-2022 走看看