标签:demo1 enum gets == dem void 并发 懒汉模式 懒汉
package test;
public class SingletonDemo1 {
/*单例模式 饿汉模式
* */
//类初始化时,立即加载这个对象,线程安全。缺点不能延迟加载
private static SingletonDemo1 st=new SingletonDemo1();
private SingletonDemo1() {}
//方法没有同步,调用效率高
public static SingletonDemo1 getSt() {
return st;
}
}
/**
* 单例模式之懒汉模式
* @author admin
*
*/
//类加载时不初始化,真正调用方法时才创建;能够延时加载
public class SingletonDemo2 {
private static SingletonDemo2 st;
private SingletonDemo2() {}
//缺点调用效率不高,加入同步锁,是因为线程在进行并发操作时,A刚结束,
//B线程又调用了方法创建了两个对象,不符合单例模式
public static synchronized SingletonDemo2 getSt() {
if(st==null) {
st=new SingletonDemo2();
}
return st;
}
}
package test;
/**
* 静态内部类实现单例模式
* @author admin
*
*/
//既能懒加载,调用效率高,线程安全。
public class SingletonDemo4 {
private static class SingletTonclassInstance{
private static final SingletonDemo4 instance=new SingletonDemo4();
}
private SingletonDemo4() {
}
public static SingletonDemo4 getInstance() {
return SingletTonclassInstance.instance;
}
}
package test;
/**
* 枚举类实现单例模式
* @author admin
*
*/
public enum SingletonDemo5 {
//这个枚举元素,本身就是单例对象,无懒加载
INSTANCE;
public void SingletonDemo5() {
//添加自己需要的操作
}
}
(后续还要补充,单例模式应用)
标签:demo1 enum gets == dem void 并发 懒汉模式 懒汉
原文地址:https://www.cnblogs.com/xiaosong1/p/12891949.html