Java知识点之单例设计模式
2015-11-05 13:13
225 查看
1.单例设计模式概述
1.定义
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。引用自某度2.使用场景
当某一实例存在多个可能会引起程序逻辑错误时出于节省系统资源的目的
2.三种常用的实现方式
1.饿汉式
代码示例://饿汉式 class Single{ private static final Single instance=new Single(); private Single(){ //执行代码 } //定义获取实例对象的静态方法 public static Single getInstance(){ return instance; } }
2.懒汉式
代码示例://懒汉式(延迟加载)-非线程安全形式 class SingleAnother{ private static SingleAnother instance=null; private SingleAnother(){ //执行代码 } //定义获取实例对象的静态方法 public static SingleAnother getInstance(){ //在创建前进行判断 if(instance==null){ instance=new SingleAnother(); } return instance; } }
3.线程安全的懒汉式(双重锁形式)
代码示例://懒汉式(延迟加载)-线程安全-双重锁模式 class SingleAnotherSafe{ private static SingleAnotherSafe instance=null; private SingleAnotherSafe(){ //执行代码 } //定义获取实例对象的静态方法 public static SingleAnotherSafe getInstance(){ //进行两次判断节省用户资源 if(instance==null){ synchronized(SingleAnotherSafe.class){ if(instance==null) instance=new SingleAnotherSafe(); } } return instance; } }
说明:该模式进行了两次判断,仅在第一次实例化时令线程对锁进行判断。实例创建后,就没必要再次判断锁了。有利于节省系统资源
相关文章推荐
- 从”JAVA“而终 13:java IO流和File类的讲解
- Java数据类型转换规则
- 35 个 Java 代码性能优化总结
- Java四类八种数据类型
- Java Servlet工作原理问答
- (JAVA)获取图片轮廓
- Spring 3整合Quartz 2实现定时任务(转)
- 单例模式的三种写法
- java厚积薄发之String常用方法
- 桶排序算法之Java实现
- 浅析Java中的final关键字
- Java RMI 介绍和例子以及Spring对RMI支持的实际应用实例
- java中static作用详解
- Java多线程
- java 获取当前月第一天和最后一天
- java数组中,然后把奇数放在数组的左边,偶数放在右边,方法一
- spring 使用logback打印调试日志
- 深入理解java中的synchronized关键字
- JAVA字符串格式化-String.format()的使用
- SpringMVC介绍之约定优于配置