黑马程序员技术交流社区

标题: 记录---饿汉式和懒汉式 [打印本页]

作者: ColdMoon    时间: 2015-7-30 19:19
标题: 记录---饿汉式和懒汉式
1、饿汉式
饿汉式:指全局的单例实例在类加载时构建。 立即初始化。
速度快,不调用时也创建
类被加载时,静态变量instance会被初始化,此时类的私有构造函数会被调用。
  1. public class Singleton1 {
  2.          Singleton1(){}
  3.          private static Singleton1 instance=new Singleton1();
  4.          public static Singleton1 getlnstance(){
  5.             return instance;
  6.          }
  7. }
复制代码

2、懒汉式
懒汉式:指全局的单例实例在第一次被使用时构建。延迟初始化。
速度慢,调用时才创建
改进后的代码(双重加锁)
  1. public class Singleton2 {
  2.    private Singleton2(){}
  3.    private static Singleton2 instance;
  4.    public synchronized static Singleton2 getlnstance(){
  5.     init();
  6.     if(instance==null){
  7.      synchronized(Singleton2.class){
  8.         if(instance==null)
  9.             instance=new Singleton2();
  10.      }
  11.      return instance;
  12.     }
  13.     return instance;
  14.    }
  15.    private static void init(){}
  16. }
复制代码
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
最好使用第一种


作者: AI_96    时间: 2015-7-30 19:21
6666666666666
作者: 梦想的种子    时间: 2015-7-30 19:31
目前我还看不懂
作者: 黑马.卤蛋    时间: 2015-7-30 19:32
貌似看不懂
作者: 孙晓磊    时间: 2015-7-30 20:26
懒多为面试所用
作者: 15225159271    时间: 2015-7-30 20:30
够详细,把多线程都分析上了
作者: 何时归来看花开    时间: 2015-7-30 21:10
看不懂,但记得面试题会有问着的
作者: 曾云鹏    时间: 2015-7-30 22:07
有点难~~~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2