單例模式的原理:保證一個(gè)類(lèi)有一個(gè)實(shí)例,并且提供一個(gè)全局的訪(fǎng)問(wèn)點(diǎn)(內(nèi)存地址唯一)
實(shí)現(xiàn)方式:
1、飽漢模式:
1: publicclass Singleton{
2:
3: privatestatic Singleton s = null;
4:
5: private Singleton(){
6:
7: }
8:
9: publicstatic Singleton getInstance(){
10:
11: if(s ==null){
12: s = new Singleton();
13: }
14: return s;
15: }
16: }
2、餓漢模式
1: publicclass Singleton{
2: privatestatic Singleton s = new Singleton();
3: private Sinleton(){}
4: publicstatic Singleton getInstance(){
5: return s;
6: }
7: }
單例模式的線(xiàn)程安全問(wèn)題:
1、通過(guò)synchronized關(guān)鍵字來(lái)實(shí)現(xiàn)
1: publicclass Single
2: {
3: privatestatic Single single ;
4: private Single(){
5: }
6: publicstaticsynchronized Single getInstance(){
7: if(single == null){
8: single = new Single();
9: }
10: return single;
11: }
12: }
這樣的話(huà)可以強(qiáng)制在程序運(yùn)行過(guò)程中只有一個(gè)線(xiàn)程調(diào)用該方法獲得該類(lèi)的一個(gè)實(shí)例,但是缺點(diǎn)也是如此:只有在第一次使用該對(duì)象時(shí)需要同步,再次
獲取該對(duì)象時(shí)就不需要再同步了,這時(shí)候的同步就變的多余了。
2、其實(shí)餓漢模式就是改善多線(xiàn)程的一種有效手段,這樣JVM保證任何線(xiàn)程訪(fǎng)問(wèn)單例對(duì)象時(shí),一定先創(chuàng)建該實(shí)例,代碼同上
3、另外一種改善多線(xiàn)程的方式
1: publicclass Singleton {
2:
3: privatevolatilestatic Singleton uniqueInstance;
4:
5: private Singleton() {}
6:
7: publicstatic Singleton getInstance() {
8: if(uniqueInstance == null) { //(1)
9: //只有第一次才徹底執(zhí)行這里的代碼
10: synchronized() {
11: //再檢查一次
12: if(uniqueInstance == null)
13: uniqueInstance = new Singleton();
14: }
15: }
16: return uniqueInstance;
17: }
18: }
在最開(kāi)始如果有1、2、3個(gè)線(xiàn)程走到了(1)處,假設(shè)1進(jìn)入了同步塊,2、3等待。1實(shí)例化后,2進(jìn)入同步塊,發(fā)現(xiàn)uniqueInstance已經(jīng)不為空,跳出同步塊。接著3進(jìn)入,又跳出同步塊。
volatile關(guān)鍵字確保:當(dāng)uniqueInstance變量被初始化成Singleton實(shí)例時(shí),多個(gè)線(xiàn)程正確地uniqueInstance變量。如果性能是你關(guān)心的重點(diǎn),那么這個(gè)做法可以幫你大大地減少getInstance()的時(shí)間耗費(fèi)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)站欄目:單例模式的多線(xiàn)程-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article12/ihcgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站內(nèi)鏈、小程序開(kāi)發(fā)、虛擬主機(jī)、外貿(mào)建站、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容