(1.83)-13-05-線程同步編程基礎(chǔ)_第1頁
(1.83)-13-05-線程同步編程基礎(chǔ)_第2頁
(1.83)-13-05-線程同步編程基礎(chǔ)_第3頁
(1.83)-13-05-線程同步編程基礎(chǔ)_第4頁
(1.83)-13-05-線程同步編程基礎(chǔ)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

線程同步主要內(nèi)容競爭狀態(tài)、線程安全的、臨界區(qū)線程同步同步方法、同步塊利用顯式加鎖同步線程線程沖突如果一個共享資源被多個線程同時訪問,可能會遭到破壞。案例——線程沖突假設(shè)創(chuàng)建并啟動100個線程,每個線程通過deposit方法向同一個賬戶上存1元錢。請問該賬戶上有多少錢?100。不是,原因?競爭狀態(tài)任務1和任務2以一種會引起沖突的方式訪問一個共享資源,這稱為競爭狀態(tài)。線程安全的vs.線程不安全的如果一個類的對象在多線程程序中沒有導致競爭狀態(tài),則稱這樣的類是線程安全的。如果一個類的對象在多線程程序中導致競爭狀態(tài),則稱這樣的類是線程不安全的。臨界區(qū)為避免競爭狀態(tài),應該防止多個線程同時進入程序的某一特定部分。程序中這樣一部分稱作臨界區(qū)。示例中的臨界區(qū)是deposit存款方法臨界區(qū)加鎖和解鎖為保證臨界區(qū)中的代碼在一段時間內(nèi)只被一個線程執(zhí)行,應在線程開始執(zhí)行臨界區(qū)代碼時,給臨界區(qū)加鎖。這樣,其他線程在這個臨界區(qū)被解鎖之前,無法執(zhí)行臨界區(qū)的代碼,在臨界區(qū)被解鎖之后,其他線程才可以鎖定并執(zhí)行其中的代碼。線程同步線程同步用于協(xié)調(diào)相互依賴的線程的執(zhí)行。內(nèi)在鎖Java的每個對象都有一個內(nèi)在鎖,有時也稱作監(jiān)視器鎖。獲得對象的內(nèi)在鎖是能夠獨占該對象訪問權(quán)的一種方式。同步代碼塊Java通過同步代碼塊實現(xiàn)內(nèi)在鎖,Java支持兩種同步:1)方法同步2)塊同步方法同步就是在定義方法時使用synchronized關(guān)鍵字。同步方法使用一個同步方法在執(zhí)行之前都隱式地需要加鎖。鎖是一種實現(xiàn)資源排他使用的機制。同步方法隱式鎖的使用調(diào)用一個對象上的同步實例方法,需要給該對象加鎖。調(diào)用一個類上的同步靜態(tài)方法,需要給該類加鎖。然后執(zhí)行該方法,最后解鎖。在解鎖之前,另一個調(diào)用該對象(或該類)中方法的線程將被阻塞,直到解鎖。同步deposit方法同步塊當執(zhí)行方法中的某一個代碼塊時,同步語句不僅可用于對this對象加鎖,而且可用于對任何對象加鎖。這個代碼塊稱為同步塊。同步塊同步語句的一般形式:synchronized(this或?qū)ο?{ statements;}注意任何同步的實例方法都是可以轉(zhuǎn)換為同步語句。publicsynchronizedvoidxMethod(){ //方法體}public

voidxMethod(){

synchronized(this){ //方法體 }}利用顯式加鎖同步線程一個鎖是一個Lock接口的實例。它定義了加鎖和釋放鎖的方法。ReentrantLock是Lock的一個具體實現(xiàn)。利用顯式加鎖同步線程創(chuàng)建鎖Locklock=new ReentrantLock();獲取鎖lock.lock();釋放鎖lock.unlock();案例——賬戶存錢使用三種方法實現(xiàn)線

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論