單例模式 靜態內部類實現(推薦使用)

2021-08-07 02:35:27 字數 776 閱讀 2988

使用場景:

package com.test;

public class singleton_innerclass

//私有構造方法

private singleton_innerclass() {}

//獲得物件例項

public static singleton_innerclass getinstance()

}

優點:

1.採用靜態內部類的方式,作為單例,直接用classloader(jvm類載入機制)進行處理非同步加鎖問題,並減少記憶體消耗

2.懶載入(餓漢式),即延遲載入。

3.執行緒安全。

分析:

1.用靜態內部類只有在第一次使用才會被載入。

2.為解決併發,主要通過使用synchronized來加互斥鎖,進行同步控制。但某些情況下,jvm已經隱含的執行了同步,這些情況下就不用自己再來進行同步控制了。 |

1>由靜態初始化器(在靜態欄位上或static{}塊中的初始化其)初始化資料時。

2>訪問final欄位時。

3>在建立執行緒之前建立物件時。

4>執行緒可以看到他將要處理的物件時。

靜態內部類實現單例模式

new b.c b b new b b.c c b.new c public class singleton public synchronized static singleton getinstance return instance public static singleton getins...

單例模式 靜態內部類

靜態內部類是乙個很好的實現單例的方式 看 package cn.liz.syn public class staticinner 私有的靜態內部類 private static class inner 公共的 獲取例項的方法 public static staticinner getinstance...

單例模式 靜態內部類

1 2 單例模式 靜態內部類3 4public class singletontest0711 1213 14 靜態內部類實現方式 15 16class singleton 2324 25 2.寫乙個靜態內部類,直接返回singleton 26 27private static class sing...