java多线程编程(二)----单例模式

一.java中的设计模式

单例模式是一种设计模式,就比如下棋的时候对于高手来说,每个人都会很多种棋谱,在比赛中按照棋谱的套路灵活应用,见招拆招。java中的设计模式就和棋谱一样,程序员按照棋谱来写代码能够保证下限。设计模式有很多种,之前有个大佬写了一本书有23种设计模式,不同的语言有不同的设计模式。对于新手来说最主要的是理解2种设计模式,单例模式和工产模式。

二.单例模式

单例模式是一种设计模式,用于确保一个类只能有一个实例,也就是只能new一次,并提供全局访问这个实例的方式。单例模式的基本思想是将类的实例化过程封装起来,使得整个程序中只有一个对象能够被创建。这个唯一的对象被称为单例对象,他可以被类的所有方法共享。
单例模式主要分为2种饿汉模式和懒汉模式。

一.饿汉模式

饿汉模式是在类加载的时候创建出实例

class Single{
   
    private static Single single = new Single();
    public static Single create(){
   
       return single;
    }
    private Single(){
   

    }
}
public class Test12 {
   
    public static void main(String[] args) {
   
         Single str1=Single.create();
         Single str2 = Single.create();
        System.out.println(str1==str2);
    }
}

在这里插入图片描述
在这里插入图片描述
Singlel类带有static,类属性,由于每个类对象是单例的,类对象的属性(static),也就是单例的。代码的执行时机是在Single类被jvm加载的时候,Single类会在jvm第一次使用的时候加载。如果我们继续new对象会发生什么?
在这里插入图片描述
我们发现new对象的时候编译器报错,这是应为Single类的构造方法是私有的,出了该类则不能访问。那么一定不能访问吗?
尽管该类的构造方法是私有的,但是可以使用反射去访问,创造出多个实例。反射是属于非常规的编程手段,正常开发的时候,不应该或者慎用反射。滥用反射,会带来极大的风险,会让代码变的抽象难以维护。java也有其他方式实现单例模式不怕反射。

二.懒汉模式(非线程安全)

懒汉模式是第一次使用实例的时候就创建,能不创建就不创建。

class Si
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值