A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. //饿汉式单实例,实际开发中使用
  2. class HungrySingle
  3. {
  4.     private HungrySingle(){}  //私有化构造函数,使得外部调用者无法实例该类
  5.     private static final HungrySingle hs = new HungrySingle();  //自己new一个实例
  6.     public static HungrySingle getInstance() //把实例返回给调用者
  7.     {
  8.         return hs;
  9.     }
复制代码
  1. //懒汉式
  2. class LazySingle
  3. {
  4.     private LazySingle(){}
  5.     private static LazySingle ls = null;
  6.     public static LazySingle getInstance()
  7.     {
  8.         if(ls == null)
  9.         {
  10.             synchronized(LazySingle.class)
  11.             {
  12.                 if(ls == null)
  13.                 ls = new LazySingle();
  14.             }
  15.         }
  16.         return ls;
  17.    }
  18. }
复制代码
懒汉式在实际开发中少使用,但是一定要会写,面试考单例设计肯定是考懒汉式,涉及考点:为何要引入同步(多线程访问时会有安全隐),为何这里选用同步代码块而不选用同步函数(增加程序的运行效率),同步使用的是什么锁(字节码文件的Class类,格式:类名.calss)


2 个回复

倒序浏览
我out了,我还不知道要加上多线程的呢
回复 使用道具 举报
单例在很多框架中都有用到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马