单例模式的演进

package com.webex.annotation;

//饿汉式: 没有线程安全问题
class Singleton {
private static Singleton singleton = new Singleton();

private Singleton() {
}

public Singleton getInstance() {
return singleton;
}
}

// 懒汉式(1):
//单重检查模式:有重复初始化的情况

class Singleton2 {
private static Singleton2 singleton = null;

public static Singleton2 getInstance() {
if (singleton == null) {
singleton = new Singleton2();
}
return singleton;
}
}


//懒汉是2:线程安全的方式
class Singleton3 {
private static Singleton3 singleton = null;

public static Singleton3 getInstance() {
if (singleton == null) {
singleton = new Singleton3();
}
return singleton;
}
}


//// 懒汉式3:
//双重检查模式: 此处省略

// 懒汉式4:
public class Test {

private static class TestHolder {
static{
System.out.println("init");
}
final static Test instance = new Test();
}

public Test getInstance() {
return TestHolder.instance;
}
}


// 比较:
/*饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种 ,如果用第二种,则推荐使用懒汉是4*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值