设计模式这块一直是自己薄弱之处,常用的无非是单例模式和简单工厂模式。前不久去面试,当被问到为什么要用单例模式时,却用了单例模式的优点来做答,结果可想而知,后面又重新看了下单例模式,又加深了其了解,这里记下以共享。
之所以用单例模式,主要是由于某些特殊场景只能存在一个实例,例如一些计数,或如一些排号等。单例模式的优点是内存占用相对少,因为系统只存在一个实例。
我们一般会像以下这样写出单例模式:
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (null == instance) {
instance = new Singleton();
}
return instance;
}
}
后在网上看到说是这种写法当在多线程并发的情况下,就有可能会创建出多个实例,解决办法有多种,一种是在声明实例时进行初始化,一种是对获取实例方法加上synchronized:
public class Singleton {
// 方法一
private static Singleton instance = new Singleton();
private Singleton() {}
// 方法二
public synchronized static Singleton getInstance() {
return instance;
}
}
初始化instance,由于前面有了static关键字,保存了这一行代码只会执行一次,下面的获取实例getInstance方法加了同步关键字synchronized解决了并发问题。
分享到:
相关推荐
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 PPT详细了单例模式的实现和使用场景
Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式Java SE程序 单例模式...
Java单例模式,其中:单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种
java单例模式的例子java单例模式的例子java单例模式的例子
详细讲解了Java单例模式的几种实现方式,并有详细的示例配合讲解.
Java设计模式-单例模式(懒汉和恶汉)
源码 博文链接:https://tianlihu.iteye.com/blog/747737
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
java Singleton单例模式 java Singleton单例模式
通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包实例,高效加载配置文件,java语言编写。通过单例模式实例化获取propertyUtil 工具包...
Java单例模式Java单例模式Java单例模式Java单例模式
实用Java的单例模式,实用于Java学习者 单例模式 单例模式
java单例模式开发的7中写法,网上搜索的,可以看看
目录 单例模式的概念 单例模式的要点 单例模式类图 单例模式归类 单例模式的应用场景 单例模式解决的问题 单例模式的实现方式 单例模式实现方式对比 单例模式的概念 单例模式,顾名思义就是只有一个实例,并且由它...
编写一个类LimitInstanceClass,该类最多可以实例化指定个数实例。实例的个数用配置文件InstanceLimit.cfg指定。例如,如果InstanceLimit.cfg的内容为2,则LimitInstanceClass最多可以同时存在2个对象。...
java单例模式连接数据库源码.可以直接引用只需加入相应的mysql 或 oracle的驱动,修改源码的连接地址用户名及密码。
java 单例模式