/***

* 懒汉模式 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中单例七种写法(懒汉、恶汉、静态内部类、双重检验锁、枚举)相关推荐

  1. Java设计模式之单例模式(七种写法)

    Java设计模式之单例模式(七种写法) 第一种,懒汉式,lazy初始化,线程不安全,多线程中无法工作: public class Singleton {private static Singleton ...

  2. java 静态内部类 线程安全问题_单例模式的七种写法, 面试题:线程安全的单例模式...

    http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 第一种(懒汉,线程不安全): Java代码  pu ...

  3. Java设计模式——单例模式的七种写法

    单例模式(Singleton) 单例模式(Singleton)是一种常用的设计模式.在Java应用中,单例模式能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...

  4. Java单例模式的七种写法

    第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton (){} pu ...

  5. java单例模式的七种写法_Java设计模式之单例模式的七种写法

    什么是单例模式? 单例模式是一种常见的设计模式,单例模式的写法有很多种,这里主要介绍三种: 懒汉式单例模式.饿汉式单例模式.登记式单例 . 单例模式有以下特点: 1.单例类只能有一个实例. 2.单例类 ...

  6. java 中单例_java 中单例实例

    1.懒汉模式 /** * 懒汉模式 -> 双重同步锁单例模式 * 单例实例在第一次使用时进行创建 */ public class SingletonExample5 { // 私有构造函数 pr ...

  7. 单例模式的七种写法(转)

    转载请注明出处:http://cantellow.iteye.com/blog/838473 第一种(懒汉,线程不安全): Java代码   public class Singleton { priv ...

  8. python条件语句代码例子_Python 炫技操作:条件语句的七种写法

    原标题:Python 炫技操作:条件语句的七种写法 作者 | 写代码的明哥 责编 | 郭芮 有的人说 Python 入门容易,但是精通难的语言,这点我非常赞同. Python 语言里有许多(而且是越来 ...

  9. JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手

    JS奇淫技巧:数值的七种写法 JS奇淫技巧:挑战前端黑科技,数值的七种写法,能全看懂的一定是高手 你知道吗?在JS编程中,数值可以有很多种写法. 第一种写法: 一般情况而言,数值就是数值. 比如: v ...

最新文章

  1. 《虚拟化工程师》-真实环境-培训计划 v0.0.1( 赠送:第 01\02 章 (免费视频))...
  2. Photoshop简单制作绿色暗调风景图
  3. 小米台灯底座接口很松_呵护你的眼,米家台灯1S
  4. 神经网络粒子和物理粒子的一个本质差别
  5. 1.1 基础-取近似值
  6. go本地调用image-syncer
  7. 【LeetCode笔记】160. 相交链表(Java、链表)
  8. java基础----Serializable的使用---- http://www.cnblogs.com/huhx/p/serializable.html
  9. 深度学习入门之二阶段小demo练习(持续更新系列)
  10. android studio调整字体大小,如何在Android Studio中增加字体大小?
  11. 哔哩哔哩APP导出缓存视频并合并成MP4
  12. 【QT】常用字符串/文件操作
  13. 服装erp软件如何提高企业利润
  14. Gym 100962J Jimi Hendrix (DFS + 树形dp)
  15. MongoDB实验练习题
  16. matlab 将子文件下同名称文件移植到同一文件夹下并按序排列重命名n.bmp,n=1,2,3...
  17. mac系统ssh可视化工具zoc的简单使用
  18. 如何使用python-docx第三方库,操作读写doc Word文档,快速制作数据报表
  19. 西门子二代精简屏无法正常显示中文字符时,如何给屏幕传送Chinese fonts?
  20. 变形金刚3 部分台词

热门文章

  1. numpy生成随机数
  2. 将图片读取为像素格式
  3. leetcode算法第5题
  4. 光流数据集FlyingChairs下载连接
  5. slice,substring,substr的区别
  6. CSS题目系列(1) - 可滚动的Table
  7. 让你上瘾的网易云音乐推荐算法,用Word2vec就可以实现
  8. 微信支付的坑 返回值 -1
  9. 一个由印度人编写的VC串口类
  10. ON REG EXPRESSION.SYNTAX