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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java单例模式的几种实现方式

發(fā)布時(shí)間:2023/12/10 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java单例模式的几种实现方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java單例模式的幾種實(shí)現(xiàn)方式

在Java 中,單例類只能有一個(gè)實(shí)例,必須創(chuàng)建自己的唯一實(shí)例,單例類必須給所有其他對(duì)象提供這一實(shí)例。Java 單例模式有很多種實(shí)現(xiàn)方式,在這里給大家介紹單例模式其中的幾種。分別是餓漢式,懶漢式,Double CheckLock實(shí)現(xiàn)單例,靜態(tài)內(nèi)部類。它們都有相互的優(yōu)缺點(diǎn)。
適用場景

需要生成唯一序列的環(huán)境。
需要頻繁實(shí)例化然后銷毀的對(duì)象。
創(chuàng)建對(duì)象時(shí)耗時(shí)過多或者耗資源過多,但又經(jīng)常用到的對(duì)象。
方便資源相互通信的環(huán)境。

選擇

單例對(duì)象占用資源少,不需要延時(shí)加載,枚舉好于餓漢。
單例對(duì)象占用資源多,需要延時(shí)加載,靜態(tài)內(nèi)部類好于懶漢式。

一. 餓漢式

線程安全,調(diào)用效率高,但是不能延時(shí)加載。

//實(shí)例化這個(gè)類 public class Singleton {private static final Singleton instance = new Singleton();// 私有化構(gòu)造器private Singleton(){} //創(chuàng)建靜態(tài)工廠方法,讓外部可以獲取實(shí)例public static Singleton getInstance(){return instance;} }

二. 懶漢式

線程安全,調(diào)用效率不高,但是能夠延時(shí)加載。

//類初始化時(shí),不初始化這個(gè)對(duì)象(延時(shí)加載,真正用的時(shí)候再創(chuàng)建) public class Singleton {private static final Singleton instance;// 私有化構(gòu)造器 private Singleton(){} //方法同步,調(diào)用效率低// 創(chuàng)建靜態(tài)工廠方法 ,讓外部可以獲取實(shí)例public static synchronized Singleton getInstance(){if (instance == null) {instance = new Singleton();}} }

三. Double CheckLock實(shí)現(xiàn)單例

Double CheckLock 雙重鎖判斷機(jī)制(由于JVM底層模型原因,偶爾會(huì)出問題,不建議使用),是在懶漢式單例基礎(chǔ)上發(fā)展而來的。

public class Singleton {private volatile static Singleton instance; // 私有化構(gòu)造器private Singleton(){ } //靜態(tài)工廠方法,雙重鎖判斷機(jī)制public static Singleton newInstance(){if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();} }} return instance;} }

四.靜態(tài)內(nèi)部類
線程安全,調(diào)用效率高,可以延時(shí)加載。

public class Singleton {private static class fw{private static final Singleton instance = new Singleton();}// 私有化構(gòu)造器private Singleton(){} //靜態(tài)工廠方法public static Singleton getstance(){return fw.instance;} } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的Java单例模式的几种实现方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。