java单例对象

转http://www.cnblogs.com/coffee/archive/2011/12/05/inside-java-singleton.html
1、如果单例对象不大,允许非懒加载,可以使用方法三。
方法三
/**
* 预先初始化static变量 的单例模式 非Lazy 线程安全
* 优点:
* 1、线程安全
* 缺点:
* 1、非懒加载,如果构造的单例很大,构造完又迟迟不使用,会导致资源浪费。
*
* @author laichendong
* @since 2011-12-5
*/
public class SingletonFour {

/** 单例变量 ,static的,在类加载时进行初始化一次,保证线程安全 */
private static SingletonFour instance = new SingletonFour();

/**
* 私有化的构造方法,保证外部的类不能通过构造器来实例化。
*/
private SingletonFour() {

}

/**
* 获取单例对象实例
*
* @return 单例对象
*/
public static SingletonFour getInstance() {
return instance;
}

}


如果需要懒加载,推荐使用方法四。

方法四:使用内部类。

/**
* 基于内部类的单例模式 Lazy 线程安全
* 优点:
* 1、线程安全
* 2、lazy
* 缺点:
* 1、待发现
*
* @author laichendong
* @since 2011-12-5
*/
public class SingletonFive {

/**
* 内部类,用于实现lzay机制
*/
private static class SingletonHolder{
/** 单例变量 */
private static SingletonFive instance = new SingletonFive();
}

/**
* 私有化的构造方法,保证外部的类不能通过构造器来实例化。
*/
private SingletonFive() {

}

/**
* 获取单例对象实例
*
* @return 单例对象
*/
public static SingletonFive getInstance() {
return SingletonHolder.instance;
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值