黑马程序员技术交流社区

标题: java之延迟加载线程安全 [打印本页]

作者: 2015天马行空    时间: 2015-10-20 15:37
标题: java之延迟加载线程安全
public class Person {

        //定义静态私有的本类型成员变量,并创建对象供方法返回
        private static Person p;
       
        //私有化构造方法,让外界无法直接创建对象
        private Person() {
        }

        //对外提供静态公共的获取实例方法,不考虑安全,不考虑效率
        public static Person getInstance() {
                //判断是否已经有实例对象
                if(p==null) {
                        //如果没有对象,才创建
                        p = new Person();
                }
                return p;
        }
       
        //对外提供静态公共的获取实例方法,考虑安全,不考虑效率
        public synchronized static Person getInstance() {
                //判断是否已经有实例对象
                if(p==null) {
                        //如果没有对象,才创建
                        p = new Person();
                }
                return p;
        }
        //对外提供静态公共的获取实例方法,考虑安全,不考虑效率
        public static Person getInstance() {
               
                synchronized (Person.class) {
                        //判断是否已经有实例对象
                        if(p==null) {
                                //如果没有对象,才创建对象
                                  p = new Person();
                        }
                }
               
                return p;
        }
        //对外提供静态公共的获取实例方法,考虑安全,考虑效率
        public static Person getInstance() {
                //为了判断是否执行同步
                if(p==null) {
                        synchronized (Person.class) {
                                //为了判断是否创建对象
                                if(p==null) {
                                        //如果没有对象,才创建
                                        p = new Person();
                                }
                        }
                }
                return p;
        }
}





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