java代码实现单例设计模式

单例设计模式:就是无论我们如何创建对象,你得到的都是同一个对象。
思路:静态块在在类加载的init阶段,类的类构造器中会收集所有的static块和字段并执行,static块只执行一次,由JVM保证其只执行一次。所以单例设计时,使用静态块来初始化一个本类对象以实现单例。
1.私有化构造方法
2.在当前类中定义一个本类类型的静态属性
3.编写静态块,对本类类型的静态属性实例化对象
4.编写一个静态的方法,向外界提供私有化的静态属性
方法:

public class Single {
    private static Single single;
    private Single(){}
 static{
        if(single==null)
        {
            single=new Single();
        }
 }
 public static Single getSingle(){
        return single;
 }
}

图片说明 此时可见,用构造方法已无法实例化对象,只能用静态方法实例化。
图片说明
通过上面可知,得到的对象是同一个
而且上面的方法是线程安全的,因为类变量和static块仅在类第一次加载执行一次。类加载之后,才会有实例化。所以可以理解为每一次类的实例化只有第一次实例化的时候,会导致类加载并执行static块,其它的都不会执行static块。所以static块中的操作是线程安全的,类加载的阶段还没有实例被创建,也就不存在实例的线程中修改类变量的情况存在。也不会存在jvm中相同的类加载多次。

全部评论

相关推荐

11-11 14:21
西京学院 C++
无敌混子大王:首先一点,不管学校层次怎么样,教育经历放在第一页靠上位置,第一页看不到教育经历,hr基本直接扔掉了
点赞 评论 收藏
分享
喜欢吃蛋糕仰泳鲈鱼是我的神:字节可以找个hr 给你挂了,再放池子捞
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务