当前位置: 首页 > news >正文

任务发布网站建设周口网站建设

任务发布网站建设,周口网站建设,搜索百度网页版,手机版网站如何制作软件系列文章目录 单例模式介绍 单例模式之静态常量饿汉式 单例模式之静态代码饿汉式 单例模式之线程不安全懒汉式 文章目录 系列文章目录前言一、单例设计模式介绍二、单例设计模式八种方式三、单例—静态常量饿汉式1.静态常量饿汉式介绍2.静态常量饿汉式案例3.静态常量饿汉式优缺…

系列文章目录

单例模式介绍
单例模式之静态常量饿汉式
单例模式之静态代码饿汉式
单例模式之线程不安全懒汉式


文章目录

  • 系列文章目录
  • 前言
  • 一、单例设计模式介绍
  • 二、单例设计模式八种方式
  • 三、单例—静态常量饿汉式
    • 1.静态常量饿汉式介绍
    • 2.静态常量饿汉式案例
    • 3.静态常量饿汉式优缺点
  • 四、单例—静态代码块饿汉式
    • 1.静态代码块饿汉式案例
    • 2.静态代码块饿汉式优缺点
  • 五、单例—线程不安全懒汉式
    • 1.线程不安全懒汉式案例
    • 2.线程不安全懒汉式优缺点
  • 总结


前言

大家好呀,欢迎来到柚子的博客~ 昨天可以定端午节的票了,大家准备去哪里玩呢?o( ̄▽ ̄)ブ


提示:以下是本篇文章正文内容,下面案例可供参考

一、单例设计模式介绍

(1)所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
(2)比如HibernateSessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时就会使用到单例模式。
(3)并且该类只提供一个取得其对象实例的方法,当然这个方法是静态的。

二、单例设计模式八种方式

(1)饿汉式(静态常量)
(2)饿汉式(静态代码块)

(3)懒汉式(线程不安全)
(4)懒汉式(线程安全,同步方法)
(5)懒汉式(线程安全,同步代码块)
(6)双重检查
(7)静态内部类
(8)枚举

悄悄话:醒目的这几种是可以使用的哦,特别推荐使用后三种。

三、单例—静态常量饿汉式

1.静态常量饿汉式介绍

饿汉式如果确定这个单例一定会使用一次时,就可以使用。

2.静态常量饿汉式案例

(1)构造器私有化
(2)类的内部创建对象
(3)向外暴露一个静态的公共方法
(4)代码实现如下

public class SingletonTest01 {public static void main(String[] args) {//测试Singleton instance = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();System.out.println(instance == instance2);//trueSystem,out.println("instance.hashCode=" + instance.hashCode());System.out.println("instance2.hashCode=" + instance2.hashCode());}
} 
//饿汉式(静态变量)
class Singleton {//1.构造器私有化,外部能newprivate Singleton() {}//2.本类内部创建对象实例private final static Singleton instance = new Singleton();//3.提供一个公有的静态方法,返回实例对象public static Singleton getInstance() {return instance;}
} 

3.静态常量饿汉式优缺点

(1)优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。
(2)缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个案例,则会造成内存的浪费。
(3)这种方式基于classloader机制避免了多线程的同步问题,不过instance在类装载时就实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance就没有达到lazy loading的效果。
(4)结论:这种单例模式可用,可能造成内存浪费。

注:饿汉就是太饿了,不管如何,先吃上再说。(这个名字起的真是太形象了)O(∩_∩)O

四、单例—静态代码块饿汉式

1.静态代码块饿汉式案例

代码如下(示例):

public class SingletonTest02 {public static void main(String[] args) {//测试Singleton instance = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();System.out.println(instance == instance2);//trueSystem.out.println("instance.hashCode=" + instance.hashCode());System.out.println("instance2.hashCode=" + instance2.hashCode());}
}
//饿汉式(静态变量)
class Singleton {//1.构造器私有化,外部能newprivate Singleton() {}//2.本类内部创建对象实例private static Singleton instance;static { //在静态代码块中,创建单例对象instance = new Singleton();}//3.提供一个公有的静态方法,返回实例对象public static Singleton getInstance() {return instance;}
}

2.静态代码块饿汉式优缺点

(1)这种方式和上面的方式“静态常量饿汉式”其实类似,只不过将类实例化的过程放在了静态代码块中,也是在类装载的时候,就执行静态代码块中的代码,初始化类的实例。优缺点和上面是一样的。
(2)结论:这种单例模式可用,但是可能造成内存浪费。

五、单例—线程不安全懒汉式

1.线程不安全懒汉式案例

代码如下(示例):

public class SingletonTest03 {public static void main(String[] args) {System.out.println("懒汉式1,线程不安全");Singleton instance = Singleton.getInstance();Singleton instance2 = Singleton.getInstance();System.out.println(instance == instance2);//true System.out.println("instance.hashCode=" + instance.hashCode());System.out.println("instance2.hashCode=" + instance2.hashCode());}
}
class Singleton {private static Singleton instance;private Singleton() {}//提供一个静态的公有方法,当使用到该方法时,才能创建instance//即懒汉式public static Singleton getInstance() {if(instance == null) {instance = new Singleton();}return instance;}
}

2.线程不安全懒汉式优缺点

(1)起到了Lazy Loading的效果,但是只能在单线程下使用。
(2)如果在多线程下,一个线程进入了if(singleton == null)判断语句块,还未来得及往下执行,另一个线程也通过了这个判断语句,这时便会产生多个实例,所以在多线程环境下不可使用这种方式。
(3)结论:在实际开发中,不要使用这种方式。


总结

单例模式介绍;单例模式之静态常量饿汉式(可以使用);单例模式之静态代码饿汉式(可以使用);单例模式之线程不安全懒汉式(不要使用)。


╭◜◝ ͡ ◜◝╮
( ˃̶͈◡˂ ̶͈ )感觉有用的话,欢迎点赞评论呀!
╰◟◞ ͜ ◟◞╯

http://www.sczhlp.com/news/99336/

相关文章:

  • 河南省级住房城乡建设主管部门网站wordpress主题请勿删除版权信息
  • 25/9/12(补)
  • 做网站的要素怀化网站优化联系方式
  • 网络关键词排名软件seo网站优化详解
  • 集团企业网站模板宜兴建设局官方网站
  • 德阳北京网站建设中国新设计师联盟
  • 有名的wordpress网站网页设计与网站建设考试名词解释
  • 如何发布自己的html网站企业怎么做网站做网站的公司
  • 毕业设计做网站可以用模版吗贵州网站设计公司
  • 做网站还是移动开发蛋糕店网站建设
  • 南昌网站建设策划怎么设计个人网站
  • 网站首页被降权的原因网站广告设计怎么做
  • 深入解析:“纳米总管”——Arduino Nano 的趣味生活
  • 免费做网站送域名的企业网站建设的经费预算
  • 做百度移动端网站优wordpress网站检测
  • 济南网站建设设计公司西安火车站建设
  • 网站色彩代码产品展示类网站
  • vs做网站怎么添加子页2008iis里没加域名 网站指向还在
  • 专业html5网站建设小视频制作
  • 做网站链接的页面怎么做南宁市公共资源交易中心网
  • 石家庄个人建站网站策划购物中心网站建设
  • 网站的手机站页面重复洛阳市新区建设投资有限公司网站
  • 深圳做网站优化的公司做网站域名需要在哪里备案
  • dede网站百度统计怎么做绑定云监控netsdk出错
  • 做生存曲线的网站百度搜索引擎营销
  • 电子商务专业网站设计小轲网站建设
  • 中山做网站好的公司linux系统搭建网站
  • aspx高性能网站建设部门网站建设方案
  • 济源做网站怎么收费免费空间和域名
  • 免费起名网最好的网站做一个微信小程序多少钱