`

这个静态内部类实现的单例是迟加载且线程安全的吗?

 
阅读更多
public class JiveProperties {

    private static final String LOAD_PROPERTIES = "SELECT name, propValue FROM ofProperty";

    private JiveProperties() {
    	System.out.println("JiveProperties constructor");
    }
    
    static {
    	System.out.println("static block");
    }
    
    private static class JivePropertyHolder {
    	static {
            System.out.println("initing1");
        }
    	
    	private static final String LOAD_PROPERTIES = "Inner Static Class...";
    	
    	private JivePropertyHolder() {
    		System.out.println("inner class...");
    	}
    	
        private static final JiveProperties instance = new JiveProperties();
        
        static {
            System.out.println("initing2");
        }
    }

    public static JiveProperties getInstance() {
        return JivePropertyHolder.instance;
    }

    public static void main(String[] args) {
    	System.out.println(JiveProperties.JivePropertyHolder.LOAD_PROPERTIES);
	}
    
}

 

结果:

static block
Inner Static Class...

 

因此初步判断是迟加载且是线程安全的(由final保证)

 

分享到:
评论

相关推荐

    java实现单例模式-静态内部类模式(线程安全)

    静态内部类模式结合了懒汉模式和饿汉模式的优点,既实现了延迟加载,又保证了线程安全。

    项目中用到的jdbc连接 单例模式

    在该方法中,Singleton有一个private类型静态内部类, * 内部类在外部类加载的时候并不会加载,只有在调用getInstance方法的时候加载SingletonHolder类。 * 分析: * 类载入到jvm的时候,会进行初始化,但是只会...

    –设计模式–五种实现单例模式的方式

    ① 应用场景实例② 模式优点③ 模式缺点④ 注意事项■ 单例模式的五种实现方式饿汉式代码实现懒加载代码实现双重检测锁代码实现静态内部类代码实现(也是懒加载的一种方式)枚举代码实现:diamond_suit: 总结 ...

    Python单例模式实例详解

    饿汉式单例类:在类被加载时就将自己实例化(静态初始化)。其优点是躲避了多线程访问的安全性问题,缺点是提前占用系统资源。 懒汉式单例类:在第一次被引用时,才将自己实例化。避免开始时占用系统资源,但是有多...

    DesignPattern:Java设计模式

    只要应用中不使用内部类 JVM 就不会去加载这个单例类,也就不会创建单例对象,从而实现懒汉式的延迟加载和线程安全。 饿汉模式 否 慢 快 是 单例对象初始化非常快,而且占用内存非常小的时候这种方式是比较合适的,...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【设计模式】写一个单例(延迟加载,高性能) 144 【容器】Apache Http Server和Tomcat 区别 145 【版本控制】GIT与SVN的区别 146 【高并发】Java高并发解决方案 148 HTML静态化 149 图片服务器分离 149 数据库集群和库...

    day020-继承加强和设计模式代码和笔记.rar

    饿汉模式:预加载模式 (优化方式:静态内部类) 优点:在类加载的时候,就创建好对象放到静态区了,获取对象效率高。线程安全 缺点:类加载效率低,并且static修饰的成员占用资源。 2. 懒汉...

    JAVA 静态的单例的实例详解

    主要介绍了JAVA 静态的单例的实例详解的相关资料,这里提供了实例方法,来说名不仅实现了延迟加载,又可以保证线程安全,不影响系统性能,需要的朋友可以参考下

    超级有影响力霸气的Java面试题大全文档

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 13、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 14、...

    Java性能优化

    使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以...

    java 面试题 总结

    Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 10、&和&&的区别。 &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 11、HashMap...

    疯狂JAVA讲义

    学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...

    java简易版开心农场源码-GOF23:一起来学习设计模式吧~

    java简易版开心农场源码 1. 创建型模式 创建型模式关注的是对象创建的过程, ...静态内部类式(线程安全, 调用效率高, 但是可以延时加载) 枚举单例(线程安全, 调用效率高, 不能延时加载, 并且天然地防止反

    java面试题

    3:让多个不相关的两个线程或进程之间实现通信 为什么要用spring? 答:1、主要将各个框架有效的联系起来,缩短实际编程时间。 2、可以将各个框架进行有效的管理和控制,让数据传输安全。 spring的IOC和DI? 答:...

    Java 基础面试题

    25. transient 这个关键字是干啥的 26. 什么是一致性hash算法 27. 构造方法链 28. 谈谈你对线程调度的理解 29. JDK动态代理和CGLIB动态代理 30. 反射机制以及反射的方式 31. 类加载有几种方式 32. Class.for...

    酒店管理客房系统Java源码-GOF23:Java实现23种设计模式学习笔记

    静态内部类式(线程安全,调用效率高。但是可以延时加载) 枚举单例(线程安全,调用效率高,不能延时加载) : 简单工厂模式:用来生产同一等级结构中的任意产品(对已有产品新增功能,需要修改源代码)虽然能通过...

    Java编程性能优化的技巧

    使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的...

    java面试800题

    Q0058 一个Java抽象类声明了一个方法并会抛出一个异常,问继承这个抽象类的子类,实现了这个方法,这个方法声明是不是一定要抛出一模一样的异常,可不可以不抛,或者抛出的异常比抽象类的异常范围大,或者小?...

    Java性能优化的50个细节(珍藏版)

    1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的...

Global site tag (gtag.js) - Google Analytics