package com.bjsxt.thread.syn;
/**
* 单例创建方式
* 1.懒汉式
* 1)构造器私有化
* 2)声明私有的静态变量
* 3)对外提供访问属性的方法(静态方法,确保该对象存在)
* @author Administrator
*
*/
public class Myjvm {
private static Myjvm instance;
private Myjvm() {
}
public static Myjvm getInstance(){
if (null==instance) {//提高效率
synchronized(Myjvm.class) {
if (null==instance) {//安全
instance = new Myjvm();
}
}
}
return instance;
}
}
/**
* 饿汉式
* 1)构造器私有化
* 2)声明私有的静态属性,同时创建该对象
* 3)对外提供访问属性的方法
* @author Administrator
*
*/
class Myjvm2 {
private static Myjvm2 instance = new Myjvm2(); //类加载时候创建
private Myjvm2() {
}
public static Myjvm2 getInstance(){
return instance;
}
}
/**
* 类在使用的时候加载,延缓了加载时机
* @author Administrator
*
*/
class Myjvm3 {
private static class JVMHolder{
private static Myjvm3 instance = new Myjvm3(); //类加载时候创建
}
private Myjvm3() {
}
public static Myjvm2 getInstance(){
return instance;
}
}
小白笔记(设计模式之单例模式),后续发现问题会进行修改,大神勿喷,谢谢。
原文:https://www.cnblogs.com/thoiol/p/10349463.html