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中相同的类加载多次。

全部评论

相关推荐

06-27 18:53
门头沟学院 Java
这样才知道自己不适合搞代码,考公去咯
只爱喝白开水:我也发现不适合搞代码,打算转非技术方向了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务