码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式之懒汉式

时间:2018-08-12 01:24:39      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:输出   div   允许   共享变量   检验   bsp   str   线程   安全   

单例模式之懒汉式:

class LazyMan {
    //单例模式之懒汉式,只有在需要的时候才被创建,
    //因为多个线程共享一个变量,所以会产生线程安全问题
    static private LazyMan lazyMan;
    /**
     * 因为要解决线程安全问题所以需要加上synchronized,但是这样
     * 加上后会使得程序效率很低,不仅仅是因为每次锁只允许一个线程进入,
     * 而且只有lazyMan为null的时候才会去创建,才会产生线程安全问题,
     * 不为null的时候是不会产生线程安全问题的,所以不能写成如下代码
     */
//    static synchronized LazyMan getLazyMan() {
//        if (lazyMan == null) {
//            lazyMan = new LazyMan();
//        }
//        return lazyMan;
//    }
    //这是静态方法
    static LazyMan getLazyMan() {
        //双重检验,因为如果有两条线程同时访问,假设线程A已经创建好了对象,
     //但是线程B因为也是null,如果不加第二次判断那么线程B也会创建对象。
if (lazyMan == null) { //静态代码块用共享变量的字节码文件 synchronized (LazyMan.class) { if (lazyMan == null) { lazyMan = new LazyMan(); } } } return lazyMan; } } public class Demo { public static void main(String[] args) { LazyMan lazyMan1 = LazyMan.getLazyMan(); LazyMan lazyMan2 = LazyMan.getLazyMan(); System.out.println(lazyMan1 == lazyMan2); } } 输出: true

 

单例模式之懒汉式

标签:输出   div   允许   共享变量   检验   bsp   str   线程   安全   

原文地址:https://www.cnblogs.com/lzh110/p/9461679.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!