标签:oid get ble class 细节 jvm 解决 延迟 资源
类的单例设计模式,就是采用一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。
class Singleton{
// 1.构造器私有化,外部不能new
private Singleton(){}
// 2.本类内部创建对象实例
private final static Singleton instance = new Singleton();
// 3.提供一个共有的静态方法,返回实例对象
public static Singleton getInstance(){
return instance;
}
}
优缺点:
class Singleton{
// 1.构造器私有化,外部不能new
private Singleton(){}
// 2.本类内部创建对象实例
private static Singleton instance;
static { // 静态代码块中创建单例对象
instance = new Singleton();
}
// 3.提供一个公有的静态方法,返回实例对象
public static Singleton getInstance(){
return instance;
}
}
优缺点:
class Singleton{
private static Singleton instance;
private Singleton(){}
// 提供一个静态的公有方法,当使用到该方法时,才去创建 instance
// 即懒汉式
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
优缺点:
class Singleton{
private static Singleton instance;
private Singleton(){}
// 提供一个静态的公有方法,加入同步处理的代码,解决线程安全问题
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
优缺点:
class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized (Singleton.class){
instance = new Singleton();
}
}
return instance;
}
}
优缺点:
class Singleton{
private static volatile Singleton instance;
private Singleton(){}
// 提供一个静态的公有方法,加入双重检查代码,解决线程安全问题,同时解决懒加载问题
// 同时保证了效率,推荐使用
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
instance = new Singleton();
}
}
}
return instance;
}
}
优缺点:
class Singleton{
private Singleton(){}
// 写一个静态内部类,该类中有一个静态属性
private static class SingletonInstance{
private static final Singleton INSTANCE = new Singleton();
}
// 提供一个静态的公有方法,直接返回 SingletonInstance.INSTANCE
public static synchronized Singleton getInstance(){
return SingletonInstance.INSTANCE;
}
}
优缺点:
//使用枚举,可以实现单例,推荐
enum Singleton{
INSTANCE; //属性
// public void sayOK(){
// System.out.println("ok~");
// }
}
优缺点:
标签:oid get ble class 细节 jvm 解决 延迟 资源
原文地址:https://www.cnblogs.com/xiaoran991/p/12490039.html