说起设计模式, 应该是面试中最长被问到的知识点, 通常最先能想到的非单例模式莫属!
单例模式从线程角度来讲一般分为两大类: 线程安全单例模式与非线性安全单例模式
一提到线程安全大家首先想到的是加锁,synchronized!!!, 然鹅, 加锁毕竟比不加锁要更多消耗系统资源, 下面介绍一种不需要加锁,且可以实现懒加载的线程安全单例模式, 啥也不说, 直接上代码!
import java.util.Arrays;
public class Singleton {
private Singleton() {
System.out.println("single");
}
private static class Inner {
private static final Singleton s = new Singleton();
}
public static Singleton getSingle() {
return Inner.s;
}
public static void main(String[] args) {
Thread[] ths = new Thread[200];
for(int i=0; i<ths.length; i++) {
ths[i] = new Thread(()->{
Singleton.getSingle();
});
}
Arrays.asList(ths).forEach(o->o.start());
}
}