黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 Java多線程單例模式

Java多線程單例模式

更新時(shí)間:2020-11-09 17:28:12 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1352次

?單例對(duì)象(Singleton)是一種常用的設(shè)計(jì)模式。在Java應(yīng)用中,單例對(duì)象能保證在一個(gè)JVM中,該對(duì)象只有一個(gè)實(shí)例存在。正是由于這個(gè)特點(diǎn),單例對(duì)象通常作為程序中的存放配置信息的載體,因?yàn)樗鼙WC其他對(duì)象讀到一致的信息。對(duì)于一個(gè)軟件系統(tǒng)中的某些類而言,只有一個(gè)實(shí)例很重要,例如一個(gè)系統(tǒng)只能有一個(gè)窗口管理器或文件系統(tǒng),一個(gè)系統(tǒng)只能有一個(gè)集市工具或ID生成器等等。本文就和大家一起探討一下在多線程環(huán)境下,單例模式的相關(guān)問(wèn)題。

單例模式的定義:確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn)來(lái)訪問(wèn)這個(gè)唯一實(shí)例。


1. 單例對(duì)象的屬性(或成員變量)的獲取,是通過(guò)單例對(duì)象的初始化實(shí)現(xiàn)的。也就是說(shuō),在單例對(duì)象初始化時(shí),會(huì)從文件或數(shù)據(jù)庫(kù)中讀取最新的配置信息。

2. 其他對(duì)象不能直接改變單例對(duì)象的屬性,單例對(duì)象屬性的變化來(lái)源于配置文件或配置數(shù)據(jù)庫(kù)數(shù)據(jù)的變化。

多線程單例模式的實(shí)現(xiàn):


一、基于餓漢式單例:

實(shí)例代碼

public class Singleton {

private static Singleton instance = new Singleton();

private Singleton() {

}

public static Singleton getInstance() {

return instance;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Singleton s1, s2;

s1 = Singleton.getInstance();

s2 = Singleton.getInstance();

if(s1 == s2){

System.out.println("兩個(gè)對(duì)象是相同實(shí)例");

}

else{

System.out.println("兩個(gè)對(duì)象是不同實(shí)例");

}

}

}


二、基于懶漢式單例

實(shí)例代碼

public class Singleton {

private Singleton() {

}

//靜態(tài)內(nèi)部類

private static class SingletonHandler {

private final static Singleton instance = new Singleton();

}

public static Singleton getInstance() {

return SingletonHandler.instance;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

Singleton s1, s2;

s1 = Singleton.getInstance();

s2 = Singleton.getInstance();

System.out.println("兩個(gè)對(duì)象實(shí)例是否相同?");

System.out.println(s1 == s2);

}

}

三、餓漢式與懶漢式的比較:

餓漢式單例類在類加載時(shí)就將自己實(shí)例化,它的優(yōu)點(diǎn)在于無(wú)需考慮多個(gè)線程同時(shí)訪問(wèn)的問(wèn)題,可以確保實(shí)例的唯一性;從調(diào)用速度和反應(yīng)時(shí)間速度來(lái)講,由于單例對(duì)象一開始就得以創(chuàng)建,因此要優(yōu)于懶漢式單例。但是無(wú)論系統(tǒng)在運(yùn)行時(shí)是否需要使用該單例對(duì)象,由于在類加載時(shí)該對(duì)象就需要?jiǎng)?chuàng)建,因此從資源利用效率角度來(lái)講餓漢式單例不及懶漢式單例,而且在系統(tǒng)加載時(shí)由于需要?jiǎng)?chuàng)建餓漢式單例對(duì)象,加載時(shí)間可能會(huì)比較長(zhǎng)。

懶漢式單例類在第一次使用時(shí)創(chuàng)建,無(wú)須一直占用系統(tǒng)資源,實(shí)現(xiàn)了延遲加載,但是必須要處理多個(gè)線程同時(shí)訪問(wèn)的問(wèn)題,特別是當(dāng)單例類作為資源控制器,在實(shí)例化時(shí)必然涉及資源初始化,而資源初始化很有可能耗費(fèi)大量時(shí)間,這意味著出現(xiàn)多線程同時(shí)首次引用此類的幾率比較大,需要通過(guò)同步化機(jī)制進(jìn)行控制。


單例模式的主要優(yōu)點(diǎn)在于提供了對(duì)唯一實(shí)例的受控訪問(wèn)并可以節(jié)約系統(tǒng)資源;其主要缺點(diǎn)在于因?yàn)槿鄙俪橄髮佣y以擴(kuò)展,且單例類職責(zé)過(guò)重。至于我們?cè)?a href="/javathread/" target="_self" style="color: rgb(192, 0, 0); text-decoration: underline;">多線程中實(shí)際運(yùn)用單例模式時(shí)采用惡漢式還是懶漢式單例類需要根據(jù)實(shí)際情況,對(duì)照上述的兩者的特征做出合適的選擇。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美末成年video水多 | 极品国产高颜值露脸在线 | 日本xxxⅹ69xxxx护士 | 综合558欧美成人永久网站 | 一级毛片成人午夜 | 日日摸日日碰夜夜爽视频网站 | 亚洲伦理一区二区 | 在线观看一级毛片 | 国产成人污污网站在线观看 | 最近2019中文字幕高清字幕 | 老司机在线永久免费视频观看 | 国产成人乱码一区二区三区 | 成人免费动作大片黄在线 | 无遮挡1000部拍拍拍免费观看 | 国产一区二区中文字幕 | 自拍偷拍 欧美日韩 | 在线天天干 | 国产在线观看黄色 | 色天使色婷婷丁香久久综合 | 拔擦拔擦8x高清在线 | 欧美性4khd| 亚洲日本中文字幕天堂网 | 在线观看一区二区精品视频 | 最近中文字幕大全高清视频 | 色原网站 | 在线观看 日韩 | 欧美最猛性xxxxxhd | 国产高清片 | 日韩综合第一页 | 一个人看的www视频在线 | 99看视频 | 国产不卡一区二区三区免费视 | 男人午夜视频在线观看 | 丝袜美女足淫美足美脚网站 | 国产乱人视频在线播放不卡 | 99热网站| 日韩在线视频不卡一区二区三区 | 免费在线观看毛片 | 国产一区二区三区在线 | 日本欧美一区二区三区片 | 国产精品成人免费视频 |