多线程专题 - 单例模式和多线程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/seacean2000/article/details/82458958
  1. 立即加载
  2. 延迟加载
  3. 使用静态内置类实现单例模式
  4. 序列化和反序列化的单例模式实现
  5. 使用static代码块实现单例模式
  6. 完善使用enum美剧实现单例模式

1.立即加载的单例模式

public class Singleton {

private static Singleton instance=new Singleton();

private Singleton() {

}

public static Singleton getInstance() {

return instance;

}



}

2.延迟加载的单例模式

public class Singleton {

private static Singleton instance;

private Singleton() {

}

public static Singleton getInstance() {

if(null!=instance) {

}else {

synchronized(Singleton.class) {

if(null==instance) {

instance=new Singleton();

}

}

}

return instance;

}



}

3.使用静态内置类实现单例模式,对序列化对象无能为力

public class Singleton {

private Singleton() {

}

private static class SingletonHandle{

private static Singleton Instance=new Singleton();

}

public static Singleton getInstance() {

return SingletonHandle.Instance;

}



}

4.序列化和反序列化的单例模式实现

import java.io.ObjectStreamException;

import java.io.Serializable;



public class Singleton implements Serializable{

private static final long serialVersionUID = 282571242107328345L;



private Singleton() {

}

private static class SingletonHandle{

private static Singleton Instance=new Singleton();

}

public static Singleton getInstance() {

return SingletonHandle.Instance;

}

protected Object readResolve() throws ObjectStreamException{

return SingletonHandle.Instance;

}



}

5.使用static代码块实现单例模式

public class Singleton{

private static Singleton instance;



private Singleton() {

}

static {

instance=new Singleton();

}

public static Singleton getInstance() {

return instance;

}



}

6.完善使用enum枚举实现单例模式

public class Singleton{

public enum SingletonEnum{

singletonEnum;

private Singleton instance;

private SingletonEnum() {

instance=new Singleton();

}

public Singleton getInstance() {

return instance;

}

}

public static Singleton getInstance() {

return SingletonEnum.singletonEnum.getInstance();

}



}

这几种单例模式中,前三种比较多见。

猜你喜欢

转载自blog.csdn.net/seacean2000/article/details/82458958