所谓的饱汉模式就是指:我们在其他线程想来获取实例化对象的时候,我们早就把这个对象的实例保存在内存中了。
代码如下:
private SingleThread(){}
private static SingleThread instance = new SingleThread();//饱汉模式
public static SingleThread getInstance(){
return instance;
}
所谓的饿汉模式就是指:只有刚开始的时候,我们并没有把对象实例化到内存中,而是要等到其他线程来调用的时候才实例化对象,并且以后就一直在内存中维持一份就OK了。
代码如下:
private SingleThread(){}
private static SingleThread instance = null;//饿汉模式
public static synchronized SingleThread getInstance(){
if(instance==null){
instance = new SingleThread();
}
return instance;
}
所谓的双重校验模式:鉴于饿汉模式中,每次的线程调用都要使用synchronized来做一次线程同步,这个开销对于我们的一些大型的分布式应用来说,是不希望出现这种情况的。比如淘宝这样大型的电子商务网站,恨不得消费者对应用的每次操作都立马得到响应,哪怕是提供几毫秒,对淘宝收入都是很大的响应。所以事实上饿汉模式中,我们只需要在第一次调用的时候来加锁,其他时候,我们就可以直接来判断实例是否为空就可以了:
代码如下:
private SingleThread(){}
private static SingleThread instance = null;//双重校验模式
public static SingleThread getInstance(){
if(instance==null) {
synchronized (SingleThread.class) {
if(instance==null){
instance = new SingleThread();
}
}
}
return instance;
}
如何选择的话,看具体的应用,但总的来说双重校验模式比较受欢迎。
分享到:
相关推荐
一个简单的java工程,包含注释,一目了然,其中包含了单例模式的所有实现方式,懒汉式,饿汉式,双重校验,枚举,静态内部类等方式实现单例。
Java 单例模式 懒汉模式 //懒汉式 多线程中不可以保证是一个对象
Java单例模式,其中:单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种
详细讲解了Java单例模式的几种实现方式,并有详细的示例配合讲解.
java单例模式开发的7中写法,网上搜索的,可以看看
作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 PPT详细了单例模式的实现和使用场景
java单例模式的例子java单例模式的例子java单例模式的例子
源码 博文链接:https://tianlihu.iteye.com/blog/747737
Java单例模式Java单例模式Java单例模式Java单例模式
java单例模式及实现
Java设计模式-单例模式(懒汉和恶汉)
这段代码实现了一个简单的日志记录器Logger,其中使用了Java的单例模式。在类的构造方法中,首先定义...这个简单的示例代码展示了如何使用Java单例模式来实现一个日志记录器的简单功能,方便了对日志数据的管理和记录。
java单例模式代码实例
java单例模式连接数据库源码.可以直接引用只需加入相应的mysql 或 oracle的驱动,修改源码的连接地址用户名及密码。
详解JAVA单例模式及多种实现
java单例模式
代码中演示了Java设计模式中的单例模式,其中包括饿汉单例模式,懒汉单例模式以及序列化饭序列化单例模式。在实际的开发中,可以直接借鉴使用。
非常详细的Java单例模式讲解的文档,请求通过,已经上传过一次了
【ASP.NET编程知识】java 单例模式(饿汉模式与懒汉模式).docx