成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 多線程編程核心技術(shù)6—單例模式與多線程

TesterHome / 2107人閱讀

摘要:使用雙檢查機(jī)制來實(shí)現(xiàn)多線程環(huán)境中的延遲加載單例設(shè)計模式。類主要負(fù)責(zé)日期的轉(zhuǎn)換與格式化,但在多線程環(huán)境中,使用此類容易造成數(shù)據(jù)轉(zhuǎn)換及處理的不準(zhǔn)確,因?yàn)轭惒⒉皇蔷€程安全的。

立即加載就是使用類的時候已經(jīng)將對象創(chuàng)建完畢,常見的實(shí)現(xiàn)辦法就是直接new實(shí)例化。而立即加載從中文的語境來看,有“著急”、“急迫”的含義,所以也稱為“餓漢模式”。

package com.zxf.demo.singleton_0;

public class MyObject {
    
    private static MyObject myobject = new MyObject();
    
    private MyObject(){
        
    }
    
    public static MyObject getInstatance(){
        //立即加載/餓漢模式
        //缺點(diǎn)是不能有其他實(shí)例變量
        //因?yàn)間etInstance()方法沒有同步,所以有可能出現(xiàn)非線程安全問題
        return myobject;
    }

}

延遲加載就是在調(diào)用get()方法時實(shí)例才被創(chuàng)建,常見的實(shí)現(xiàn)辦法就是在get()方法中進(jìn)行new實(shí)例化。而延遲加載從中文的語境來看,是“緩慢”、“不急迫”的含義,所以也稱為“懶漢模式”。

package com.zxf.demo.singleton_1;

public class MyObject {
    
    private static MyObject myobject;
    
    private MyObject(){
        
    }
    
    public static MyObject getInstatance(){
        
        if(myobject != null){
        }else{
            myobject = new MyObject();
        }
        
        return myobject;
    }

}

此方法加入同步synchronized關(guān)鍵字得到相同的實(shí)例對象,,但此方法的運(yùn)行效率非常低下,是同步運(yùn)行的,下一個線程想要取得對象,則必須等上一個線程釋放鎖之后,才可以繼續(xù)執(zhí)行。

使用DCL雙檢查機(jī)制來實(shí)現(xiàn)多線程環(huán)境中的延遲加載單例設(shè)計模式。

NEW狀態(tài)是線程實(shí)例化后還從未執(zhí)行start()方法時的狀態(tài),而runnable狀態(tài)是線程進(jìn)入運(yùn)行的狀態(tài),terminated是線程被銷毀時的狀態(tài)。

執(zhí)行sleep()方法后線程的狀態(tài)是timed_waiting。BLOCKED狀態(tài)出現(xiàn)在某一個線程在等待鎖的時候。

執(zhí)行wait()方法后線程的狀態(tài)枚舉值就是waiting。

線程組的作用是,可以批量的管理線程或者線程對象,有效地對線程活線程組對象進(jìn)行組織。

所謂的1級關(guān)聯(lián)就是父對象中有子對象,但不創(chuàng)建子孫對象。

類SimpleDateFormat主要負(fù)責(zé)日期的轉(zhuǎn)換與格式化,但在多線程環(huán)境中,使用此類容易造成數(shù)據(jù)轉(zhuǎn)換及處理的不準(zhǔn)確,因?yàn)镾impleDateFormat類并不是線程安全的。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68230.html

相關(guān)文章

  • Java 線程核心技術(shù)梳理(附源碼)

    摘要:本文對多線程基礎(chǔ)知識進(jìn)行梳理,主要包括多線程的基本使用,對象及變量的并發(fā)訪問,線程間通信,的使用,定時器,單例模式,以及線程狀態(tài)與線程組。源碼采用構(gòu)建,多線程這部分源碼位于模塊中。通知可能等待該對象的對象鎖的其他線程。 本文對多線程基礎(chǔ)知識進(jìn)行梳理,主要包括多線程的基本使用,對象及變量的并發(fā)訪問,線程間通信,lock的使用,定時器,單例模式,以及線程狀態(tài)與線程組。 寫在前面 花了一周時...

    Winer 評論0 收藏0
  • Java面試 32個核心必考點(diǎn)完全解析

    摘要:如問到是否使用某框架,實(shí)際是是問該框架的使用場景,有什么特點(diǎn),和同類可框架對比一系列的問題。這兩個方向的區(qū)分點(diǎn)在于工作方向的側(cè)重點(diǎn)不同。 [TOC] 這是一份來自嗶哩嗶哩的Java面試Java面試 32個核心必考點(diǎn)完全解析(完) 課程預(yù)習(xí) 1.1 課程內(nèi)容分為三個模塊 基礎(chǔ)模塊: 技術(shù)崗位與面試 計算機(jī)基礎(chǔ) JVM原理 多線程 設(shè)計模式 數(shù)據(jù)結(jié)構(gòu)與算法 應(yīng)用模塊: 常用工具集 ...

    JiaXinYi 評論0 收藏0
  • 你和阿里資深架構(gòu)師之間,差的不僅僅是年齡(進(jìn)階必看)

    摘要:導(dǎo)讀閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己進(jìn)行查漏補(bǔ)缺,覺得本文對你有幫助的話,可以點(diǎn)贊關(guān)注一下。目錄一基礎(chǔ)篇二進(jìn)階篇三高級篇四架構(gòu)篇五擴(kuò) 導(dǎo)讀:閱讀本文需要有足夠的時間,筆者會由淺到深帶你一步一步了解一個資深架構(gòu)師所要掌握的各類知識點(diǎn),你也可以按照文章中所列的知識體系對比自身,對自己...

    huaixiaoz 評論0 收藏0
  • 設(shè)計模式 單例模式

    摘要:單例模式確保一個類只有一個實(shí)例,而且自動實(shí)例化并向整個系統(tǒng)提供這個實(shí)例。將構(gòu)造函數(shù)設(shè)置為私有的,防止外界出該類的實(shí)例,從而失去了單例的意義。這種實(shí)現(xiàn)的單例模式是最簡單的,同時多個線程操作該單例時也不會有問題。這就違反了單例模式。 單例模式 確保一個類只有一個實(shí)例,而且自動實(shí)例化并向整個系統(tǒng)提供這個實(shí)例。 實(shí)現(xiàn) 餓漢式 很簡單。 將構(gòu)造函數(shù)設(shè)置為私有的,防止外界new出該類的實(shí)例,從而...

    Sourcelink 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<