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

单例设计模式

时间:2018-01-26 11:09:05      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:唯一性   线程   懒汉   共享数据   创建   同步   创建对象   内存   总结   

/**

  • java中一共有23中设计模式
  • 设计模式是设计经验的总结,解决某一类问题最行之有效的方法
  • 单列设计模式解决一个类在内存中只有一个对象的问题
  • 单列设计模式有两种体现形式:懒汉模式和饿汉模式
  • 饿汉模式在程序加载时就new对象了,懒汉模式在程序中是什么时候调用什么时候加载
  • 我一般在开发时喜欢用饿汉模式,因为不管什么时候加载反正都得加载,而且懒汉模式
  • 存在线程安全问题,因为创建对象前需要判断一下是否为空,这样就出现了最少2句代
  • 码在操作共享数据,当然了,这个问题是有解决办法的,那就是同步锁,同步锁分为
  • 同步代码块,同步方法,静态同步代码块, 因为在单列设计模式中构造方法被私有化了,
  • 我们只能提供静态方法来给调用该类的人返回该类对象,所以这里我们采用的是静态的同步方
  • 法,锁对象是类名.class
  • @author WangShuang
  • */
    public class EHan {
    private static EHan e = new EHan();
    private EHan() {
    }
    public static EHan getInstance(){
    return e;
    }
    }
    class LanHan{
    private static LanHan l = null;
    private LanHan(){
    }
    public static LanHan getInstance(){
    if(l==null){//为了提高效率,因为锁对象效率低
    synchronized (LanHan.class) {//为了保证内存中该类对象的唯一性
    if(l==null){//为了防止上述判断在执行完以后线程的执行权被其他线程抢走,而发生该类对象在内存中不唯一的情况
    l=new LanHan();
    }
    }
    }
    return l;
    }
    }

单例设计模式

标签:唯一性   线程   懒汉   共享数据   创建   同步   创建对象   内存   总结   

原文地址:http://blog.51cto.com/13579086/2065309

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