1、静态内部类
/**
* @ClassName SingletonObject6
* @Description 静态内部类实现单例模式
* @Author zeny
* @Date 2020/1/18 23:43
* @Version 1.0
*/
public class SingletonObject6 {
private SingletonObject6() {
}
private static class InstanceHolder {
private static final SingletonObject6 instance = new SingletonObject6();
}
public static SingletonObject6 getInstance() {
return InstanceHolder.instance;
}
}
2、枚举
/**
* @ClassName SingletonObject7
* @Description 枚举实现单例模式
* @Author zeny
* @Date 2020/1/18 23:43
* @Version 1.0
*/
@SuppressWarnings("all")
public class SingletonObject7 {
private SingletonObject7() {
}
private enum Singleton{
INSTANCE;
private final SingletonObject7 instance;
Singleton(){
instance = new SingletonObject7();
}
public SingletonObject7 getInstance() {
return instance;
}
}
public static SingletonObject7 getInstance() {
return Singleton.INSTANCE.getInstance();
}
}
测试:
public static void main(String[] args) {
IntStream.rangeClosed(1,10000000).forEach(i -> {
new Thread(String.valueOf(i)) {
@Override
public void run() {
System.out.println(SingletonObject7.getInstance());
}
}.start();
});
}