首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JAVA 单例的两种方式

2012-09-21 
JAVA 单例的两种模式/** * 单例模式:保证一个java的类只有一个实例 *可以通过将构造方法声明成私有的,在类

JAVA 单例的两种模式

/** * 单例模式:保证一个java的类只有一个实例 *   可以通过将构造方法声明成私有的,在类内部创建实例 *   对外提供一个公用方法来获取这个实例 *   饱汉模式:一般认为饱汉模式安全。每次申请一次内存,宁撑死不挨饿 *   饥汉模式:注意饥汉模式下的公用方法必须是线程同步的,原因???? *   其他模式:定义一个类,构造方法为private,所有方法为static的 */public class Singleton {/**1.饱汉模式 * 每次都要生成一次对象,所以饱了。这样总的类对象不是多个了吗? * 是指每次调用这个类时都要new一次吗?可是内存不是只有一份吗? */private Singleton(){//构造方法是私有的}//实例化代码放在静态代码块里可以提高程序执行效率,但可能更占空间private final static Singleton instance = new Singleton();//提供公用方法,用于获取类内部的类实例public static Singleton getInstance(){return instance;}/**2.饥汉模式,注意其getInstance方法是synchronized的 * 使用getInstance判断,当实例为空时才生成 * 不用每次生成对象,第一次使用生成实例 * 即刚开始类实例对象为null,还未申请内存。在getInstance里针对类实例进行判断 * 为空,即饥饿状态,需要创建后返回,否则直接返回 * @author wybin */private Singleton(){}private static instance = null;//先声明一个类本身实例成员。初始化为空。先不申请内存public static synchronized Singleton getInstance(){if(instance == null) instance = new Singleton();return instance;}/**3.其他模式(自己猜的) * 构造方法为private * 其他方法全部为static */private Singleton(){}private static instance = null;private static Singleton getInstance(){if(instance == null) instance = new Singleton();return instance;  }}

热点排行