• 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的实例。我们也可以同步整个静态方法,但这种做法又太过了,因为我们在初始化之前只会调用一次,之后就不需要再同步了。

  • 相关阅读:
    java将汉语转换为拼音工具类
    Maven 参数说明
    tcp socket的backlog参数
    Java 运行中jar包冲突,定位使用哪个jar包
    Java CMS GC
    数据仓库
    compareTo
    java程序性能分析之thread dump和heap dump
    npm 与 package.json 快速入门教程
    基本 Java Bean
  • 原文地址:https://www.cnblogs.com/xuelu/p/3735216.html
Copyright © 2020-2023  润新知