java例7_Java中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)
/***
* 懒汉模式 1
* 可以延迟加载,但线程不安全。
* @author admin
*
*/
public class TestSinleton1 {
private static TestSinleton1 sinleton;
private TestSinleton1(){
}
public static TestSinleton1 getSinleton(){
if(sinleton==null){
return new TestSinleton1();
}
return sinleton;
}
}
/***
* 懒汉模式变种 2
* @author admin
* 使用了synchronized关键字,既可以延迟加载,又线程安全,但是执行效率低。
*/
class TestSinleton2{
private static TestSinleton2 sinleton;
private TestSinleton2(){
}
public synchronized static TestSinleton2 getSinleton(){
if(sinleton==null){
return new TestSinleton2();
}
return sinleton;
}
}
/***
* 饿汉模式 3
* @author admin
* 基于classload机制,静态变量在类装载时进行初始化
* 可以避免线程安全问题,但是没有延迟加载。
*/
class TestSinleton3{
private static TestSinleton3 sinleton = new TestSinleton3();
private TestSinleton3(){
}
public static TestSinleton3 getSinleton(){
return sinleton;
}
}
/***
* 恶汉变种模式 4
* @author admin
* 基于静态 代码块,在实例化或者第一次调用时执行
* 既可以延迟加载,又线程安全
*/
class TestSinleton4{
private static TestSinleton4 sinleton =null;
static{
sinleton = new TestSinleton4();
}
public static TestSinleton4 getSinleton(){
return sinleton;
}
}
/***
* 双重校验锁 5
* @author admin
* 懒汉模式的优化版,拥有线程安全、高效率以及延迟加载等特性。但是这种方式需要jdk1.5以上,且在一些平台和编译器下有错。
*/
class TestSinleton5{
private static volatile TestSinleton5 sinleton;
private TestSinleton5(){
}
public static TestSinleton5 getSinleton(){
if(sinleton==null){
synchronized (TestSinleton5.class) {
if(sinleton==null){
sinleton = new TestSinleton5();
}
}
}
return sinleton;
}
}
/***
* 静态内部类 6
* @author admin
* 恶汉模式的优化版,在类被装载时,静态内部类并没有被实例化,
* 只有getInstance()时才 会装载 SingletonHolder 类,静态内部类方式也能很好地,实现线程安全、高效率和延迟加载特性。
*/
class TestSinleton6{
private static class SingletonHolder {
private static final TestSinleton6 sinleton = new TestSinleton6();
}
private TestSinleton6(){}
public static final TestSinleton6 getSinleton(){
return SingletonHolder.sinleton;
}
}
/***
* 枚举7
* @author admin
*避免多线程同步问题
*/
enum TestSinleton7 {
SINLETON;
}
java例7_Java中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)相关推荐
- Java设计模式之单例模式(七种写法)
Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton {private static Singleton ...
- java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...
http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码 pu ...
- Java设计模式——单例模式的七种写法
单例模式(Singleton) 单例模式(Singleton)是一种常用的设计模式.在Java应用中,单例模式能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...
- Java单例模式的七种写法
第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton (){} pu ...
- java单例模式的七种写法_Java设计模式之单例模式的七种写法
什么是单例模式? 单例模式是一种常见的设计模式,单例模式的写法有很多种,这里主要介绍三种: 懒汉式单例模式.饿汉式单例模式.登记式单例 . 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类 ...
- java 中单例_java 中单例实例
1.懒汉模式 /** * 懒汉模式 -> 双重同步锁单例模式 * 单例实例在第一次使用时进行创建 */ public class SingletonExample5 { // 私有构造函数 pr ...
- 单例模式的七种写法(转)
转载请注明出处:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): Java代码 public class Singleton { priv ...
- python条件语句代码例子_Python 炫技操作:条件语句的七种写法
原标题:Python 炫技操作:条件语句的七种写法 作者 | 写代码的明哥 责编 | 郭芮 有的人说 Python 入门容易,但是精通难的语言,这点我非常赞同. Python 语言里有许多(而且是越来 ...
- JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手
JS奇淫技巧:数值的七种写法 JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手 你知道吗?在JS编程中,数值可以有很多种写法. 第一种写法: 一般情况而言,数值就是数值. 比如: v ...
最新文章
- 《虚拟化工程师》-真实环境-培训计划 v0.0.1( 赠送:第 01\02 章 (免费视频))...
- Photoshop简单制作绿色暗调风景图
- 小米台灯底座接口很松_呵护你的眼,米家台灯1S
- 神经网络粒子和物理粒子的一个本质差别
- 1.1 基础-取近似值
- go本地调用image-syncer
- 【LeetCode笔记】160. 相交链表(Java、链表)
- java基础----Serializable的使用---- http://www.cnblogs.com/huhx/p/serializable.html
- 深度学习入门之二阶段小demo练习(持续更新系列)
- android studio调整字体大小,如何在Android Studio中增加字体大小?
- 哔哩哔哩APP导出缓存视频并合并成MP4
- 【QT】常用字符串/文件操作
- 服装erp软件如何提高企业利润
- Gym 100962J Jimi Hendrix (DFS + 树形dp)
- MongoDB实验练习题
- matlab 将子文件下同名称文件移植到同一文件夹下并按序排列重命名n.bmp,n=1,2,3...
- mac系统ssh可视化工具zoc的简单使用
- 如何使用python-docx第三方库,操作读写doc Word文档,快速制作数据报表
- 西门子二代精简屏无法正常显示中文字符时,如何给屏幕传送Chinese fonts?
- 变形金刚3 部分台词