春天里,百花香...
10 2007 檔案
摘要: 我們有時(shí)會(huì)遇到對(duì)同一個(gè)內(nèi)存區(qū)域如數(shù)組或者鏈表進(jìn)行多線程讀寫的情況,一般來說有以下幾種處理方式:
1.不加任何限制,多見于讀取寫入都很快的情況,但有時(shí)也會(huì)出現(xiàn)問題.
2.對(duì)讀寫函數(shù)都加以同步鎖,比如使用singleton模式,這下問題是沒了,但效率也下去了,比如說兩個(gè)讀取線程不是非要排隊(duì)進(jìn)入不可.
3.讀寫鎖,安全和效率都得到了解決,特別合適讀線程多于寫線程的情況.也就是下面將要展現(xiàn)的模式.
讀寫鎖的本意是分別對(duì)讀寫狀態(tài)進(jìn)行互斥區(qū)分,有互斥時(shí)才加鎖,否則放行.互斥的情況有:
1.讀寫互斥.
2.寫寫互斥.
不互斥的情況是:讀讀,這種情況不該加以限制.
我們只要讓鎖對(duì)象知道當(dāng)前讀寫狀態(tài)就可以了,再根據(jù)情況進(jìn)行鎖定和解鎖,然后再分情況進(jìn)行鎖定.請(qǐng)看代碼
閱讀全文
摘要: 這篇文章是"調(diào)度員,工人及任務(wù)的OO分析過程"的續(xù)篇.
上次的情況是由調(diào)度員主動(dòng)分配任務(wù),但有些情況下需要工人自動(dòng)取得任務(wù)而不是由調(diào)度員分配,這時(shí)需要對(duì)線程進(jìn)行通知,使用的主要方法就是對(duì)象的wait(),notify(),notifyAll()三個(gè)函數(shù),它們都必須從同步方法(synchronized method)中調(diào)用.
閱讀全文
摘要: 日常編碼中,我們常需要為各種業(yè)務(wù)進(jìn)行建模,為工廠中的任務(wù)調(diào)度建模就很有意思的,它的主要流程是基本是這樣:
1.調(diào)度員將工件圖紙交付給工人,這是任務(wù)的下達(dá).
2.工人工作,完成工件,這是任務(wù)的進(jìn)行過程.
3.工件完成后,工人將圖紙和工件返還給調(diào)度員,或者到了確定的時(shí)間后由調(diào)度員去取.這是任務(wù)的完成.
4.重復(fù)上述三個(gè)步驟.
在這個(gè)流程中,還存在一些特征:
1.工人可以有多項(xiàng)任務(wù),但他在一個(gè)時(shí)間只能做一個(gè)活,具體做那個(gè)由任務(wù)的優(yōu)先級(jí)確定.
2.任務(wù)完成后要讓調(diào)度員知道,現(xiàn)實(shí)中是工人來找調(diào)度員或者調(diào)度員找工人來實(shí)現(xiàn)的.
從上述情況分析,我們需要任務(wù),工人,調(diào)度員三個(gè)類來完成建模,另外為了方便任務(wù)的存儲(chǔ)和管理,還需要一個(gè)任務(wù)串類來輔助.
閱讀全文
sitinspring(http://m.tkk7.com)原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處.