日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java单列_Java 单例模式

發布時間:2023/12/15 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java单列_Java 单例模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單例模式

保證一個類只有一個實例,并且提供一個訪問該實例的全局訪問點

常見的應用場景:

任務管理器。回收站。網站的計數器。操作系統的文件系統。在servlet編程中,每個servlet也是單例模式,項目中,讀取配置文件的類,一般也只有一個對象,數據庫的連接池,Application對象等。

優點:

由于單例模式只生成一個實例,減少了系統開銷,當一個對象的產生需要比較多的資源時,如讀取配置文件,產生其他資源對象時,則可以通過在應用啟動時直接產生一個單例對象,然后永久駐留內存的方式來解決

常見的五種單例模式的實現方式:

餓漢式(線程安全,調用效率高,但是不能延時加載)

懶漢式(線程不安全,調用效率不高,但是可以延時加載)

其他:

雙重檢測鎖式(由于JVM底層內部模型原因,偶爾會出問題,不建議使用)

靜態內部類式(線程安全,調用效率高,但是可以延時加載)

枚舉單例(線程安全,調用效率高,不能延時加載)

比較

餓漢式和懶漢式區別

1、線程安全:

餓漢式天生就是線程安全的,可以直接用于多線程而不會出現問題,懶漢式本身是非線程安全的,為了實現線程安全有幾種寫法

2、資源加載和性能:

餓漢式在類創建的同時就實例化一個靜態對象出來,不管之后會不會使用這個單例,都會占據一定的內存,但是相應的,在第一次調用時速度也會更快,因為其資源已經初始化完成,而懶漢式顧名思義,會延遲加載,在第一次使用該單例的時候才會實例化對象出來,第一次調用時要做初始化,如果要做的工作比較多,性能上會有些延遲,之后就和餓漢式一樣了。

單例一定就只會創建一個對象嗎?不一定。

如果有兩個類加載器加載了該單例類,則就可能會創建多個單例實例。

每個類加載器都定義了一個命名空間,如果有兩個以上的類加載器,不同的類加載器有可能會加載同一個類,如果多個類加載器同時加載了該單例類,就有可能創建多個單例對象。

如果有這種情況,我們應該自行指定類加載器,并指向同一個類加載器。

總結

以上是生活随笔為你收集整理的java单列_Java 单例模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。