首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 繽紛校園 英語學(xué)習(xí)
2010考研 | 自學(xué)考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級(jí) | 商務(wù)英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點(diǎn)英、、、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級(jí)
等級(jí)考試 | 水平考試 | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 報(bào)檢員 | 外銷員 | 司法考試 | 導(dǎo)游考試 | 教師資格 | 國際商務(wù)師 | 跟單員
單證員 | 物流師 | 價(jià)格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會(huì)工作者
會(huì)計(jì)職稱 | 注會(huì)CPA | 經(jīng)濟(jì)師 | 統(tǒng)計(jì)師 | 注冊(cè)稅務(wù)師 | 評(píng)估師 | 精算師 | 高會(huì) | ACCA | 審計(jì)師
法律顧問 | 會(huì)計(jì)證
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結(jié)構(gòu)師 | 建筑師 | 安全評(píng)價(jià)師
房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 設(shè)備監(jiān)理師 | 巖土工程師 | 質(zhì)量資格 | 房地產(chǎn)經(jīng)紀(jì)人 | 造價(jià)員
投資項(xiàng)目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評(píng)價(jià) | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價(jià)工程師 | 招標(biāo)師
執(zhí)業(yè)護(hù)士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

多線程支持和線程安全(2)

 JDK平臺(tái)中自己實(shí)現(xiàn)了的一套更為完善的線程模型,因此它的這套線程模型是可能獨(dú)立于,也有區(qū)別于操作系統(tǒng)實(shí)現(xiàn)的線程模型。如圖10-58所示,它包含的狀態(tài)有運(yùn)行(Running)、就緒(Ready)、暫停(Suspended)、休眠(Sleeping)、阻塞(Blocked)以及監(jiān)控狀態(tài)(Monitor States)。這其中線程的運(yùn)行狀態(tài)、就緒狀態(tài)、暫停狀態(tài)、休眠狀態(tài)以及阻塞狀態(tài)都比較容易理解,另外有一個(gè)比較特殊的線程狀態(tài),也即監(jiān)控狀態(tài),它表示線程正處于查詢對(duì)象鎖的管理狀態(tài)下,稍后會(huì)繼續(xù)深入闡述這一特殊的狀態(tài)。
  JDK平臺(tái)中,線程之間的互斥控制非常易于實(shí)現(xiàn),因?yàn)镴ava語言對(duì)它有很好的支持,也即通過語言關(guān)鍵字synchronized來定義一個(gè)互斥訪問的臨界區(qū)。關(guān)鍵字synchronized的使用非常靈活,它定義的臨界區(qū)資源的顆粒度可大可小,例如可以聲明某個(gè)類的某個(gè)方法是被互斥訪問的臨界區(qū),也可以定義某個(gè)局部作用域?yàn)橐粋(gè)臨界區(qū),甚至可以直接鎖定某個(gè)對(duì)象為臨界區(qū)資源。

  而JDK平臺(tái)中線程之間的同步控制,是通過wait()和notify()方法來實(shí)現(xiàn)的,實(shí)際上wait()方法的調(diào)用相當(dāng)于執(zhí)行P操作,而notify()方法的調(diào)用則相當(dāng)于操作V,有關(guān)P,V操作的概念,請(qǐng)參閱操作系統(tǒng)中關(guān)于進(jìn)程間的同步控制與通信設(shè)計(jì)等小節(jié)中的內(nèi)容。另外為了提高安全性,JDK平臺(tái)中還定義了一個(gè)notifyAll()的方法,它用于通知并釋放所有處于阻塞等待狀態(tài)中的線程,便于這些線程有機(jī)會(huì)重新獲得退出的機(jī)會(huì),避免了一些不必要的死鎖。

  MFC中擁有一些專門實(shí)現(xiàn)線程間互斥和同步控制的對(duì)象,而與這形成鮮明對(duì)比的是,JDK平臺(tái)中則沒有提供這些類似的專有控制對(duì)象,這非常有意思,實(shí)際上JDK平臺(tái)中的wait()和notify()方法是Object類(根基類)對(duì)象所提供的方法實(shí)現(xiàn),所以說,程序中所有對(duì)象的運(yùn)行實(shí)例都擁有wait()和notify()方法。并且它的同步與互斥有著非常緊密的聯(lián)系,如圖10-59所示,這是JDK平臺(tái)中線程之間互斥與同步的轉(zhuǎn)換模型。

轉(zhuǎn)帖于:軟件水平考試_考試吧
文章搜索
多線程支持和線程安全(2)網(wǎng)友評(píng)論網(wǎng)友評(píng)論
版權(quán)聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本軟件水平考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
 gaoxiaoliang