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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单例模式的理解

發布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单例模式的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、什么是單例模式

  單例模式的作用是保證應用程序在任何時刻只存在一個單例對象,比如打印機,一旦開始打印了就不再接收其他打印任務,一直到當前任務結束,否則會出現打印出的東西里存在多個任務中的信息;

二、單例的特征

  [1] 單例只能有一個實例;

  [2]?單例只能自己實例化唯一實例;

  [3]單例必須向其他對象提供這一實例;

三、常見單例的模式

  [1]餓漢式:不管其他對象需不需要單例的唯一實例,我都先完成實例化,你要就拿不用就放那;

1 package com.zyy.stop; 2 3 public class Zyyprotest { 4 5 public static void main(String[] args) { 6 SingleTon1.getSingleTon(); 7 } 8 } 9 10 class SingleTon1 { 11 12 private SingleTon1 () {} 13 14 //不管需不需要,先創建再說 15 static SingleTon1 st1 = new SingleTon1(); 16 17 public static SingleTon1 getSingleTon() { 18 return st1; 19 } 20 }

  [2]懶漢式:外部需要唯一實例,不存在才會去創建;

1 package com.zyy.stop; 2 3 public class Zyyprotest { 4 5 public static void main(String[] args) { 6 SingleTon2.getSingleTon(); 7 } 8 } 9 10 class SingleTon2 { 11 12 private SingleTon2 () {} 13 14 15 static SingleTon2 st2 = null; 16 17 public static SingleTon2 getSingleTon() { 18 //不存在才會去創建 19 if (st2 == null) 20 st2 = new SingleTon2(); 21 22 return st2; 23 } 24 }

  [3] 登記式:創建過唯一實例后,將該實例登記到Map中,下次用的直接從Map中獲取;

1 package com.zyy.stop; 2 3 import java.util.Map; 4 5 import org.apache.commons.collections4.map.HashedMap; 6 7 public class Zyyprotest { 8 9 public static void main(String[] args) throws InstantiationException, IllegalAccessException, 10 ClassNotFoundException { 11 SingleTon3.getSingleTon("SingleTon3"); 12 } 13 } 14 15 class SingleTon3 { 16 17 private static Map<String, SingleTon3> map = new HashedMap<String, SingleTon3>(); 18 19 protected SingleTon3 () {} 20 21 public static SingleTon3 getSingleTon(String name) throws InstantiationException, IllegalAccessException, 22 ClassNotFoundException { 23 24 if (name == null) 25 name = SingleTon3.class.getName(); 26 27 if (map.get(name) == null) 28 map.put(name, (SingleTon3)Class.forName(name).newInstance()); 29 30 return map.get(name); 31 } 32 }

四、雙重檢查鎖

  ?這里我們用懶漢式來介紹雙重檢查鎖,

1 class SingleTon2 { 2 3 private SingleTon2() {} 4 5 static SingleTon2 st2 = null; 6 7 public static SingleTon2 getInstaTon2 () { 8 if (st2 == null) 9 st2 = new SingleTon2(); 10 11 return st2; 12 } 13 }

在getInstaTon2 ()方法中有一步判斷是否為空的操作,比如現在有2個線程A與B,同時到達判斷這一步,在這一瞬間實例并沒有創建,所以他們都能通過判斷去創建2個實例,這就與單例的唯一實例相違背了;

但是我們通過雙重檢查鎖就可以規避這種極端的情況:

1 class SingleTon2 { 2 3 private SingleTon2() {} 4 5 static SingleTon2 st2 = null; 6 7 public static SingleTon2 getInstaTon2 () { 8 if (st2 == null) { 9 synchronized (st2) { 10 if (st2 == null) 11 st2 = new SingleTon2(); 12 } 13 } 14 15 return st2; 16 } 17 }

?

轉載于:https://www.cnblogs.com/zyypro/p/7810103.html

總結

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

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

主站蜘蛛池模板: 网站黄在线观看 | 男阳茎进女阳道视频大全 | 国精产品乱码一区一区三区四区 | 性生活一级大片 | 强行挺进白丝老师翘臀网站 | 男人天堂亚洲 | 黄色三级大片 | 亚洲图色av | 男人的天堂影院 | 久久中文字幕网 | 咪咪成人网 | 国产农村妇女精品 | 超碰97人人在线 | 波多野一区二区 | 51成人网 | 精品二三区 | 又色又爽又黄无遮挡的免费视频 | 蜜桃成人在线观看 | 2019中文在线观看 | 欧美精品一 | 天堂网在线中文 | 波多野结衣亚洲一区 | 911毛片 | 国产精品日韩欧美一区二区三区 | 在线久久| 亚洲欧美天堂 | 亚洲熟妇色自偷自拍另类 | 久久精品国产亚洲av无码娇色 | 瑟瑟网站在线观看 | 欧美巨乳在线 | 动漫av在线 | 先锋av资源站 | 伊人亚洲天堂 | a级黄色片网站 | 午夜秋霞 | 窝窝午夜精品一区二区 | 想要视频在线观看 | 成人久色| 久久不卡日韩美女 | 91麻豆精品国产理伦片在线观看 | 欧美日本黄色 | 美女涩涩视频 | 999久久久国产 | 久久538 | 性生活在线视频 | 欧美色鬼 | 亚洲自拍色图 | 超碰97在线资源 | aa黄色大片 | 成人av第一页| 精品久久久无码中文字幕 | 黄色大片免费在线观看 | 传媒视频在线观看 | 美女又爽又黄免费视频 | 成人一级片视频 | 成人午夜视频在线 | 手机在线精品视频 | 亚洲最大成人在线 | 亚洲欧美日韩一区 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 欧美日韩一区二 | 9久9久9久女女女九九九一九 | 成人毛片18女人毛片 | 麻豆视频在线观看免费网站黄 | 亚洲色图一区二区三区 | 成人黄色在线网站 | 日韩精品极品视频 | 日本一级二级视频 | 红桃视频一区二区三区免费 | 国产精品视频一 | 国产精选中文字幕 | 131美女爱做视频 | 日本黄区免费视频观看 | 久久一级免费视频 | 天堂аⅴ在线最新版在线 | 日本肉体xxxx裸体137大胆图 | 蜜桃视频一区二区三区在线观看 | av色站| 97av.com| 欧美日韩国产免费 | 欧美xxxx18| 美女网站在线看 | 在线一区视频 | 好好热视频 | 久久11| 激情av综合 | 伊人在线视频 | 67194午夜 | 在线精品视频一区 | aaa在线播放 | 加勒比hezyo黑人专区 | 捆绑无遮挡打光屁股调教女仆 | 射网站 | 亚av | 亚洲欧美综合色 | 国产制服在线 | 亚洲精品 欧美 | 国产亚洲精品精品精品 | 日日骚视频 |