我是靠谱客的博主 温柔彩虹,这篇文章主要介绍Spring -11 -单例设计模式 -懒汉式/饿汉式(idea默认的)单例设计模式,现在分享给大家,希望可以做个参考。

单例设计模式

  1. 作用: 在应用程序有保证最多只能有一个实例.
  2. 好处:

  2.1 提升运行效率.

  2.2 实现数据共享. 案例:application 对象

    1. 懒汉式

  3.1 对象只有被调用时才去创建.

  3.2  示例代码

       3.3由于添加了锁,所以导致效率低.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class lazySingleton { //懒汉式,单例模式! //由于对象需要被静态方法调用,把方法设置为static //由于对象是static,必须要设置访问权限修饰符为private , //如果是public 可以直接调用对象,不执行访问入口 private static lazySingleton ourInstance ; /** *方法名和类名相同,无返回值. *其他类不能实例化这个类对象;对外提供访问入口 */ private lazySingleton() { } /** *实例方法,实例方法必须通过对象调用 *设置方法为静态方法 *@return 一个上面的static 对象 */ public static lazySingleton getInstance() { //添加逻辑如果实例化过,直接返回 if(ourInstance==null){ /* * 多线程访问下,可能出现if 同时成立的情况,添加锁; 监控这个类下创建一个锁,每次只允许一个class进入; */ synchronized (lazySingleton.class){ if(ourInstance==null){ //双重验证 ourInstance =new lazySingleton(); } } } return ourInstance; } }

3.4 测试

  

复制代码
1
2
3
4
5
6
7
8
9
lazySingleton singleton = lazySingleton.getInstance(); lazySingleton singleton1 = lazySingleton.getInstance(); System.out.println(singleton==singleton1); System.out.println(singleton); System.out.println(singleton1); -------------------- true com.test.lazySingleton@60e53b93 com.test.lazySingleton@60e53b93

 

4.饿汉式  (IDEA 编译器默认的singleTon)
  解决了懒汉式中多线程访问可能出现同一个对象和效率低问题 ,多个实例共用一个对象!

复制代码
1
2
3
4
5
6
7
8
public class hungerSingleton { private static hungerSingleton ourInstance = new hungerSingleton(); public static hungerSingleton getInstance() { return ourInstance; } private hungerSingleton() { } }

 

转载于:https://www.cnblogs.com/zhazhaacmer/p/10113952.html

最后

以上就是温柔彩虹最近收集整理的关于Spring -11 -单例设计模式 -懒汉式/饿汉式(idea默认的)单例设计模式的全部内容,更多相关Spring内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部