JAVA单例模式

一:单例模式
单例模式主要有四种实现方式
1:懒汉式

package test;

public class SingleTon {

    private static SingleTon singleTon = null;

    private SingleTon() {
    };

    // 懒汉式 线程不安全
    public static SingleTon getSingleTon() {
        if (singleTon == null) {
            singleTon = new SingleTon();
        }
        return singleTon;
    }

    // 懒汉式 线程安全(但是每次访问)getSingleTon2都会在类上加锁,效率非常低
    public static synchronized SingleTon getSingleTon2() {
        if (singleTon == null) {
            singleTon = new SingleTon();
        }
        return singleTon;
    }

    // 懒汉式 线程安全 先判断一次 如果为空 在类上加锁,然后再里面的判断是有几个线程进入
    // 了第一个判断,但是只能走一个,走的这一个进行判断为空就创建,然后后面进入第一个空判断的线程
    // 再判断就是存在的了。
    public static SingleTon getSingleTon3() {
        if (singleTon == null) {
            synchronized (SingleTon.class) {
                if (singleTon == null) {
                    singleTon = new SingleTon();
                }
            }
        }
        return singleTon;
    }

    // 静态内部类
    静态内部类只在类第一次加载是被加载,所以是线程安全的。
private SingleTon(){}
    private static class LazyClass {
        private static final SingleTon SINGLE_TON = new SingleTon();
    }

    public static final SingleTon getSINGLE_TON() {
        return LazyClass.SINGLE_TON;
    }

    //恶汉加载
    private static final SingleTon TON = new SingleTon();
    private static SingleTon getSingleTon4(){
        return TON;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值