java设计模式之单例模式
来源:互联网 发布:vue.js 手风琴菜单 编辑:程序博客网 时间:2024/05/22 07:47
单例模式:整个程序只提供一个实例
分类:懒汉式、饿汉式
懒汉式:需要的时候才创建对象;
懒汉式是线程不安全的,并发环境下很可能出现多个Singleton实例,要在getInstance方法上加同步。
代码演示:
public class Singleton {// 提供一个私有的静态的变量来保存当前实例private static Singleton demo;// 构造私有private Singleton() {}// 提供公共的访问入口public static synchronized Singleton getInstance() {if (null == demo) {//即使可以不用大括号,但是为了程序的可读性还是应该加上demo = new Singleton();}return demo;}}
public class SingletonTest {public static void main(String[] args) {Singleton singleton = Singleton.getInstance();Singleton singleton1 = Singleton.getInstance();//运行后会发现两个变量的内存地址是一样的,证明是单例System.out.println(singleton);System.out.println(singleton1);}}
饿汉式: 类加载时便创建出来了,不管有没有需要;
饿汉式在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变,所以天生是线程安全的,
可用于多线程,但是不应该过多地在类加载时创建实例,因为会影响效率。
代码演示:
public class Singleton2 {//静态的在类被加载的时候调用,且只加载一次;所以test唯一。public static Singleton2 test = new Singleton2();private Singleton2() {}}
public class Singleton2Test {public static void main(String[] args) {// 静态的属性可以通过类名调用Singleton2 singleton201 = Singleton2.test;Singleton2 singleton202 = Singleton2.test;//运行后会发现两个变量的内存地址是一样的,证明是单例System.out.println(singleton201);System.out.println(singleton202);}}
阅读全文
0 0
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- Java模式设计之单例模式
- Java模式设计之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java设计模式之单例模式
- Java模式设计之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- java设计模式之单例模式
- C++贪吃蛇
- 将数组转变为list或者set方法之一
- 心态
- 简单代码实现wordpress用户注册IP地址限制
- 然而我今天发的是代码!
- java设计模式之单例模式
- Java中Synchronized的用法
- C++中的运算符重载
- c语言发展史-简介
- Spring Boot项目页面报错 OTS parsing error: Failed to convert WOFF 2.0
- The form contains the following error: Fingerprint has already been taken
- LUOGU P2085 最小函数值
- 第n个丑数(java版)
- 语言常青树——C