JAVA单例模式:懒汉式,饿汉式
今天复习了一下java的单例模式,写了懒汉式和饿汉式的实现例子。代码如下:
1.懒汉式单例
package com.lf.shejimoshi; /**
* @classDesc: 类描述:(懒汉式单例测试类)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
public class SingletonTest {
/**
* @functionDesc: 功能描述:(测试懒汉式单例模式)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
public static void main(String[] args) {
Student s1 = Student.getStudent();
Student s2 = Student.getStudent();
System.out.println(s1==s2);
} } /**
* @classDesc: 类描述:(学生类)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
class Student{ //定义全局变量
private static Student student; //私有化构造函数
private Student(){ } /**
* @functionDesc: 功能描述:(对外暴露方法)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
public static Student getStudent(){
if(student==null){
//加上同步锁,保证线程安全
synchronized(Student.class){
student = new Student();
}
}
return student;
}
}
2.饿汉式单例
package com.lf.shejimoshi; /**
* @classDesc: 类描述:(测试类)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
public class Singleton2Test { public static void main(String[] args) { Teacher teacher1 = Teacher.getTeacher();
Teacher teacher2 = Teacher.getTeacher();
System.out.println(teacher1==teacher2); } } /**
* @classDesc: 类描述:(饿汉式单例)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
class Teacher{
//类加载的时候初始化一次
private static final Teacher teacher = new Teacher();
//私有化构造函数
private Teacher(){
super();
}
/**
* @functionDesc: 功能描述:(对外暴露的方法)
* @author baobaolan
* @createTime 2018年1月10日
* @version v1.0
*/
public static Teacher getTeacher(){
return teacher;
} }
3.总结
懒汉式线程不安全,需要加上同步锁,同步锁影响了程序执行效率。
饿汉式天生线程安全,类加载的时候初始化一次对象,效率比懒汉式高。
JAVA单例模式:懒汉式,饿汉式的更多相关文章
- java单例模式(饿汉式和懒汉式)
1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程 ...
- java中的单例模式(懒汉式+饿汉式)
什么是单例模式: 单例模式既只能在自己本类中创建有且唯一的一个实例(姑且不考虑映射的情况)通过方法将该实例对外公开 第一种:单例模式-懒汉式 既调用getInstance()方法返回实例之前判断有没有 ...
- java基础10 单例模式之饿汉式和懒汉式单例
前言: 软件行业中有23中设计模式 单例模式 模版模式 装饰者模式 观察者模式 工厂模式 ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...
- Spring -11 -单例设计模式 -懒汉式/饿汉式(idea默认的)
单例设计模式 作用: 在应用程序有保证最多只能有一个实例. 好处: 2.1 提升运行效率. 2.2 实现数据共享. 案例:application 对象 懒汉式 3.1 对象只有被调用时才去创建. 3. ...
- Java单例模式之饿汉模式与懒汉模式
单例模式是我们在开发软件的过程中经常用到的23中常用的java模式之一,主要的功能就是保证我们所使用的对象只有一个,这也在一方面减少了出错的可能性,增强了代码的健壮.单例模式一般来说有两种实现的方式, ...
- scala:分别使用懒汉式和饿汉式实现单例模式
在java中,单例模式需要满足以下要求: 构造方法私有化,使得本类之外的地方不能使用构造方法new出对象 提供私有静态属性,接收单例对象 公共的.静态的getInstance方法,便于外界拿到单例对象 ...
- Java单例模式《一》饿汉式
package com.study.mode; /** * 单例模式:饿汉式. 线程安全. * @ClassName: SingleBean * @author BlueLake * @date 20 ...
- java设计模式单例模式 ----懒汉式与饿汉式的区别
常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...
- 关于Java单例模式中懒汉式和饿汉式的两种类创建方法
一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...
随机推荐
- 六款常见的Linux操作系统推荐
家常常可能因为工作或学习的需要,要使用个操作系统(比如Windows和Linux).大家对Windwos支持的文件系统可能比较熟悉,而对Linux操作系统所支持的文件系统也许比较陌生.下面小编为大家推 ...
- NumPy使用 Matplotlib 绘制直方图
NumPy - 使用 Matplotlib 绘制直方图 NumPy 有一个numpy.histogram()函数,它是数据的频率分布的图形表示. 水平尺寸相等的矩形对应于类间隔,称为bin,变量hei ...
- Delphi_时间间隔
1. var dtOnlineDateTime, dt: TDateTime; begin dt := StrToDateTime('2017/6/28 16:41:30'); dtOnlineDat ...
- Linux常用命令.rpm
1.安装: rpm -ivh 包全名(查询依赖网址:http://www.rpmfind.net) -i(install):安装 -v(verbose):显示详细信息 -h(hash):显示进度 -- ...
- mysql create database and user 新建数据库并为其创建专用账号
DROP DATABASE `wordpress`;------------------------------------------------------------------ CREATE ...
- git生成和检查秘钥操作
查看本地是否有git config的配置: git config --list 设置用户名和邮箱: $git config --global user.email "tanteng@gmai ...
- linux应用之wget命令详解
wget是linux最常用的下载命令, 一般的使用方法是: wget + 空格 + 要下载文件的url路径 例如: # wget linuxsense.org/xxxx/xxx.tar.gz" ...
- java mybatis XML文件中大于号小于号转义(转载)
因为这个是xml文件不允许出现类似“>”这样的字符 用了转义字符把>和<替换掉,然后就没有问题了. XML转义字符 字段 符号 说明 < ; < 小于号 & ...
- MSSQL旋转和反旋转的例子
1.旋转 ;WITH CTE AS ( AS VAL UNION ALL UNION ALL UNION ALL UNION ALL UNION ALL UNION ALL UNION ALL ) S ...
- spring容器和上下文的理解
spring容器和上下文的理解 spring框架现在使用的很多,这说明有其独特之处----依赖注入,很简单的四个字,在我们需要对象的时候,spring就可以给我们提供所需要的对象,对象的创建.销毁.管 ...