說起設(shè)計(jì)模式, 應(yīng)該是面試中最長(zhǎng)被問到的知識(shí)點(diǎn), 通常最先能想到的非單例模式莫屬!
單例模式從線程角度來講一般分為兩大類: 線程安全單例模式與非線性安全單例模式
一提到線程安全大家首先想到的是加鎖,synchronized!!!, 然鵝, 加鎖畢竟比不加鎖要更多消耗系統(tǒng)資源, 下面介紹一種不需要加鎖,且可以實(shí)現(xiàn)懶加載的線程安全單例模式, 啥也不說, 直接上代碼!
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());
}
}