JAVA_单例设计模式

单例设计模式:
*单例类只有一个实例。

*单例类必须自己创建自己的唯一实例。

*单例类必须给所有其他对象提供这一实例

*单例分为饿汉试和懒汉式

  1. 懒汉式:
package com.nyist.Single;

/**
 * Created with IntelliJ IDEA.
 * User: 子玉
 * Date: 2017-10-12
 * Time: 20:38
 * Description:单例设计模式_懒汉设计模式  懒就要付出代价,必然线程是相对来说是不安全的!!!
 */
public class GargageLazy {

    private static GargageLazy instance;


    /**
     * 这个地方的线程是不安全的 如果说一个线程第一次访问的时候进入到了if语句很显然第一次是满足条件的,但是
     * 根据多线程的特点,存在当他进入到if判断下面一句的时候有可能CPU的执行权被第二个线程抢去了,
     * 所以说这样的话并不能满足单例的初衷,只能满足一个.所以说需要加锁,实现同步
     * @return
     */
    public  static GargageLazy getInstance(){
        synchronized(GargageLazy.class){//类的描述符为锁企标,同步代码块的效率并不高所以
            if(instance == null){
                synchronized (GargageLazy.class){
                    instance = new GargageLazy();
                }
            }
        }
        return instance;
    }
    private GargageLazy(){}


}

2.饿汉式

package com.nyist.Single;

/**
 * Created with IntelliJ IDEA.
 * User: 子玉
 * Date: 2017-10-12
 * Time: 20:33
 * Description:单利模式__饿汉式   饿汉,可以形象的理解成饿的很,所以说对象先New出来,这也是和懒汉最
 * 本质的区别!!(我就是这样记的!)
 */
public class GargageBox {
    /**
     * 私有化构造,对象不能随便的实例化,静态的访问,
     */

    //静态的成员变量:先New出来一个
    private static GargageBox instance = new GargageBox();

    //得到私有的对象的方法
    private GargageBox getInstance(){
        return instance;
    }

    private GargageBox(){

    }

}

饿汉和懒汉是单例两种典型的特点.线程安全的相对来说是饿汉模式.我记忆的方法和理解的部分都在注解的地方写的很清楚了.如果有什么错误,欢迎大家留言指正.希望一起进步.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值