java两种单例模式用法分析
作者:sir 发布时间:2023-10-06 03:51:34
标签:java,单例模式
本文实例讲述了java两种单例模式用法。分享给大家供大家参考,具体如下:
按照加载方式的不同,单例模式有两种实现:
private:只能在同一个类中使用
static:该类是类方法,不能调用实例方法。/类全局变量
final:方法或成员变量不能被修饰
1、饿汉式
public class EagerSigleton{
private static final EagerSigleton instance=new EagerSigleton();
private EagerSigleton(){}////私有构造方法
public EagerSigleton getInstance(){//静态工厂方法
return instance;
}
}
2、懒汉式
public class LazySigleton{
private static final LazySigleton instance=null;
private LazySigleton(){}//私有构造函数
public synchronized LazySigleton getInstance(){//静态工厂方法,注意这里的synchronized
if(instance==null){
instance=new LazySigleton();
}
return instance;
}
}
分析对比:
相同点:
单例模式属于创建模式,保证在同一个jvm中仅仅存在该类的一个实例。在上面两种的单例模式中,可以看出:
① 两种方式的构造函数都是私有的。
② 对外接口都是工厂方法。
不同点:
饿汉式是在类装载时直接得到该类的实例,可以说式前期绑定的。而懒汉式在类加载时并没有指向具体的某个对象。而是当调用工厂方法后才被实例化。因此,前者速度快,后者速度慢。但后者可以加载其他的类,(也就是动态扩展)灵活性高。
更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。


猜你喜欢
- 首先我们要知道,主要系统服务都是在 SystemServer 启动的,蓝牙也是如此:1、SystemServer源码路径:/framewor
- 简介线段树是一种二叉搜索树,是用来维护区间信息的数据结构。可以在O(logN)的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区
- 前言更新都写完了,但是要更新文件要怎么操作呢?连接服务器然后上传上去,修改下xml的版本号当然也是可以的,但是还是没有写个程序使用起来方便,
- 对于触摸屏,其原生的消息无非按下、抬起、移动这几种,我们只需要简单重载onTouch或者设置触摸 * setOnTouchListener即
- (1)编写接口Animal (Animal.java)public interface Animal{ public abstr
- 当只需要两个图像合并的时候,可以简单的使用gdi+,把两个图像画到一个画布上面实现合并bitmap.当需要将许多bitmap合并时,由于bi
- 本文实例讲述了Java实现插入排序的方法。分享给大家供大家参考。具体实现方法如下:import java.util.Arrays; /**
- WPF动画效果系列WPF实现动画效果(一)之基本概念WPF实现动画效果(二)之From/To/By 动画WPF实现动画效果(三)之时间线(T
- 一、前言 Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。 滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。 所以我
- TabControl控件中TabPage选项卡切换时的触发事件选项卡切换触发的是TabControl控件的SelectedIndexChan
- Spring @Order进行排序直接上代码public class OrderAnnotationTest { &
- 使用前准备Build.gradle文件配置dependencies配置compile 'com.squareup.retrofit2
- 1 前言在项目开发中,异步化处理是非常常见的解决问题的手段,异步化处理除了使用线程池之外,还可以使用 CompletableFut
- TableView,算是一个很重要的控件,几乎随处可见,而且功能强大,数据展示效果良好。所以,在JavaFX中,我们自然而然也应该学习一下T
- 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例&
- 前言通过上一章的学习, 我们了解了Server启动的大致流程, 有很多组件与模块并没有细讲, 从这个章开始, 我们开始详细剖析netty的各
- C++编写的一个图书管理系统,供大家参考,具体内容如下2018大一的课设,搬到这纪念一下,共1200多行代码为图书管理人员编写一个图书管理系
- 一个应用场景,浏览器上传一个文件,此文件后台调用文件转换,需要耗费相当长的时间,这样,如果是一个线程同步式的做下去,那么用户在浏览器上感觉就
- 目录IntroSampleWhat insideMoreReferenceIntroC# 9 中引入了 record,record 是一个特
- 这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码所需的maven依赖<dependency>