亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java的單例設計模式詳解

2024-07-14 08:43:18
字體:
來源:轉載
供稿:網友

1.什么是單例模式

  • 生成一個獨一無二的,保證任何時刻一個類只有一個實例的模式
  • 確保一個類只有一個實例,并提供一個全局訪問點
  • 可以在需要時才創建對象,避免了全局變量在程序啟動時就得創建對象的缺點。

2.經典單例模式實現

public class MyInstance{ //第一步:私有化構造器,只有類自身才能調用構造器外部類不能夠直接new出這個類的實例對象 private MyInstance(){} //第二步:聲明一個全局靜態變量來記錄自身實例的對象,也是私有的,限制其它外部類訪問 private static MyInstance myInstance; //第三步:提供一個外部可訪問的靜態公開方法,來獲得該類的唯一實例 public static MyInstance getMyInstance(){ //第四步:進行判斷自身類對象如果為空,則創建一個實例 if(myInstance==null){  //這里的方法只執行了一次,生成了一個唯一的類對象  myInstance=new MyInstance(); } //第五步:如果不為空,則返回該類對象,故由始至終,該類對象只初始化過一次,只有一個對象存在,這就是單例模式 return myInstance; }}

3.經典模式存在的缺陷

這種經典模式也稱之為懶漢式單例模式(lazy instantiaze),因為它是延遲化實例化的,即如果我們不需要這個實例,則它永遠不會被初始化,只有在調用過一次實例化方法后,才會被創建出對象。

在多線程的情況下可能會產生并發問題,因為獲取單例的方法getMyInstance()有可能被多個線程同時訪問,這時就會有可能 創建出兩個以上的實例對象。這就要考慮要線程安全的問題了,解決問題就是在獲取實例方法處加一個同步鎖,這樣就能輕松地解決線程并發的問題了。

public static synchronized MyInstance getMyInstance(){ //加同步鎖關鍵字synchronized,這樣在有線程訪問這個方法時,其它線程只能等待當前線程訪問結束才能訪問這個方法。 if(myInstance==null){  //這里的方法只執行了一次,生成了一個唯一的類對象  myInstance=new MyInstance(); }

4.多線程下同步所造成的性能問題

如果將獲取實例的方法進行同步的話,會造成程序執行的效率大大地下降,而且單例對象生成只要調用一次方法即可,之后每次調用這個方法時,同步都是一種累綴,有可能會拖垮程序的性能。

當然如果你的程序對于性能的要求并不是很高的話,用同步的方法獲取單例是最簡單而有效的。

為保證程序的性能并且又不會出現并發的問題,可以使用另一種生成單例對象的模式,叫做餓漢式單例模式(eagerly instantiaze)

public class MyInstance{ //第一步:私有化構造器 private MyInstance(){} //第二步:聲明一個全局靜態變量來記錄自身實例的對象,并進行實例化 private static MyInstance myInstance=new MyInstance(); //第三步:提供一個外部可訪問的靜態公開方法,來獲得該類的唯一實例 public static MyInstance getMyInstance(){ return myInstance; }

這個模式使JVM在加載這個類時會馬上創建唯一的單例對象,這樣就能保證任何線程訪問靜態單例變量myInstance時,單例對象一定被實例化過了。

5.利用雙重檢查加鎖來提升性能

  • 首先檢查實例是否已經創建了,如果沒有才進行同步獲取實例的方法,這樣就保證了實例方法只會在第一次獲取實例時會同步。
  • 這里要用到一個關鍵字volatile,此關鍵字確保了當實例變量myInstance被初始化成實例對象時,多個線程能正確地處理實例變量。注意,這個關鍵字只有在Java1.5及以上的版本才會對雙重檢查加載生效。
public class MyInstance{ //用關鍵字volatile修飾實例變量 private volatile static MyInstance myInstance; //私有化構造器 private MyInstance(){} public static MyInstance getMyInstance(){ //第一次檢查實例是否存在 if(myInstance==null){  //如果不存在則進入同步區塊  synchronized (MyInstance.class){  if(myInstance==null){   //第二次檢查,如果不為空才真正創建實例對象   myInstance=new MyInstance();  }  }  } //如果不為空,則直接返回該類對象 return myInstance; }}

單例模式的所有情況都已經總結完畢,一開始以為單例模式應該是所有設計模式中最簡單易懂的了,沒想到看到四人幫的HeadFirst設計模式后發現還有這么多門道,真的是學無止境。

注:以上所有內容皆總結自《HeadFirst 設計模式》

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久视频在线| 久久久久久久久国产精品| 亚洲午夜国产成人av电影男同| 精品美女永久免费视频| 亚洲欧美综合区自拍另类| 久久久女人电视剧免费播放下载| 中文字幕日韩欧美在线视频| 欧美另类交人妖| 精品亚洲va在线va天堂资源站| 日产日韩在线亚洲欧美| 国产精品久久久久久影视| 成人精品一区二区三区电影免费| 国产精品成人av性教育| 91亚洲精华国产精华| 国产成人亚洲精品| 高清欧美性猛交| 成人黄色午夜影院| 国产69精品久久久久99| 国产精品视频成人| 成人精品一区二区三区电影免费| 91免费版网站入口| 亚洲美女视频网站| 欧美一级大胆视频| 一个人看的www欧美| 亚洲香蕉伊综合在人在线视看| 国产美女扒开尿口久久久| 中文字幕精品久久| 人人做人人澡人人爽欧美| 久久精彩免费视频| 92裸体在线视频网站| 国产精品欧美一区二区三区奶水| 欧美日韩国产页| 色综合老司机第九色激情| 亚洲色图欧美制服丝袜另类第一页| 亚洲精品成人免费| 国产一区二区三区直播精品电影| 久久精品免费电影| 国内外成人免费激情在线视频网站| 欧美日韩国产精品一区| 性欧美暴力猛交69hd| 亚洲国产另类 国产精品国产免费| 国产精品嫩草影院一区二区| 国产亚洲视频中文字幕视频| 91精品久久久久久久| 狠狠做深爱婷婷久久综合一区| 欧美性20hd另类| 亚洲欧美制服综合另类| 精品成人国产在线观看男人呻吟| 91夜夜揉人人捏人人添红杏| 国产一区二区三区中文| 亚洲成人激情图| 日韩欧美国产高清91| 国产成人精品优优av| 国产欧美日韩丝袜精品一区| 国内偷自视频区视频综合| 亚洲视频欧洲视频| 亚洲剧情一区二区| 国产精品久久久久久久久借妻| 91精品久久久久久综合乱菊| 久热国产精品视频| 在线性视频日韩欧美| 久久视频这里只有精品| 欧美中文字幕在线视频| 亚洲日韩欧美视频| 在线观看成人黄色| 久久精品亚洲94久久精品| 久久天天躁夜夜躁狠狠躁2022| 亚洲第一精品久久忘忧草社区| 亚洲欧美日韩国产成人| 国产精品99蜜臀久久不卡二区| 日韩一级黄色av| 欧美大码xxxx| 亚洲国产精品va| 国产精品69久久| 日韩av在线一区二区| 成人免费在线视频网站| 国产精品九九久久久久久久| 2021久久精品国产99国产精品| 91精品啪在线观看麻豆免费| 亚洲午夜精品久久久久久久久久久久| 一本大道香蕉久在线播放29| 久久久亚洲福利精品午夜| 日韩成人xxxx| 国产一区二区三区精品久久久| 91在线视频成人| 日韩精品中文字幕在线| 久久久精品日本| 欧美亚洲国产精品| 亚洲一区二区三区成人在线视频精品| 国产成人在线播放| 国产精品久久999| 欧洲亚洲在线视频| 国产精品黄页免费高清在线观看| 欧美丰满老妇厨房牲生活| 欧美另类暴力丝袜| 第一福利永久视频精品| 欧美性猛交视频| 中文字幕在线看视频国产欧美在线看完整| 久久成人精品电影| 91欧美精品午夜性色福利在线| 亚洲社区在线观看| 亚洲美女www午夜| 日韩精品中文字幕在线观看| 亚洲成人免费网站| 在线日韩欧美视频| 日韩成人免费视频| 亚洲一级黄色av| 91国产在线精品| 日韩中文字幕在线播放| 九九热最新视频//这里只有精品| 国产男女猛烈无遮挡91| 久久久久久18| 97国产一区二区精品久久呦| 在线观看日韩欧美| 少妇高潮久久77777| 在线日韩欧美视频| 国产精品一区二区久久久久| 国产中文字幕亚洲| 国产啪精品视频网站| 欧美精品久久一区二区| 亚洲日韩第一页| 日韩av在线影视| 成人福利网站在线观看| 亚洲一区二区少妇| 成人性生交大片免费观看嘿嘿视频| 2019最新中文字幕| 亚洲理论电影网| 久久亚洲精品一区| 91九色视频在线| 日韩在线视频网站| 日韩中文字幕精品| 亚洲精品之草原avav久久| 亚洲男人天堂古典| 97精品视频在线观看| 久久91精品国产| 91久久综合亚洲鲁鲁五月天| 日韩av免费在线观看| 国内免费精品永久在线视频| 日韩美女中文字幕| 亚洲国产婷婷香蕉久久久久久| 亚洲精品国产精品自产a区红杏吧| 91亚洲永久免费精品| 欧美激情一区二区三区久久久| 欧美成在线观看| 日韩欧美在线播放| 青青久久aⅴ北条麻妃| 欧美性感美女h网站在线观看免费| 亚洲性线免费观看视频成熟| 久久成人这里只有精品| 国产精品三级在线| 国产中文字幕日韩| 久久久久久高潮国产精品视| 日韩中文字幕久久| 亚洲亚裔videos黑人hd| 欧美大片免费观看在线观看网站推荐| 亚洲精品第一国产综合精品| 97色在线视频观看| 久久久中文字幕| 亚洲国产另类久久精品| 91精品视频观看| 日本亚洲欧美成人| 插插插亚洲综合网| 国产精品对白刺激| 亚洲福利视频网站|