併發程式設計之深入理解Lock介面

2021-10-01 17:31:24 字數 961 閱讀 9728

寫乙個執行緒不安全的**:

public

class

unsafethread

public

static

void

main

(string[

] args)

catch

(interruptedexception e)

} countdownlatch.

countdown()

;}).

start()

;}while

(true)}

}}

這裡的countdownlatch 是乙個同步工具類,它允許乙個或多個執行緒一直等待,直到其他執行緒執行完後再執行。乙個執行緒執行結束後要呼叫countdown方法操作,實際就是釋放鎖的操作,每呼叫一次,計數值減少 1。

這裡是模擬10個執行緒,每個執行緒執行的任務是讓num++100次,最後num的結果應是1000。執行上面的**,執行緒不安全,每次返回結果都不一致。

可以加synchronized關鍵字

public

static

synchronized

void

increase()

在執行的方法上,使其變成執行緒安全的方法,也可用lock介面的方法加鎖:

private

static lock lock =

newreentrantlock()

;public

static

void

increase()

每次啟用鎖要呼叫lock()方法,結束後要用unlock()來釋放鎖。

對於lock介面裡的方法進行了學習,有如下解釋:

對於lock與synchronized關鍵字的區別:

java高併發程式設計之深入理解Thread建構函式

2.1 執行緒的命名 構造中含有string name引數的就表示執行緒的名字。還可以呼叫thread 類的setname 方法重新命名 2.2 執行緒的父子關係 thread的所有建構函式,最終都會去呼叫乙個靜態方法init.private void init threadgroup g,runn...

深入理解併發程式設計 FutureTask

本文為讀書筆記 可參考 futuretask jdk8實現 jkd1.8不再依賴aqs來實現,而是用的cas state 2.futuretask的使用 3.futuretask的實現 jkd1.8不再依賴aqs來實現 4.使用舉例 future介面和實現future介面的futuretask類,代...

多執行緒程式設計之pthread執行緒深入理解

不同的平台和作業系統上 程序和執行緒的實現機制不完全一致 但是一般來說執行緒棧都是獨立的 只要得到位址就可以相互訪問 pthread是 posix threads 的簡稱,是posix的執行緒標準。前幾篇部落格已經能給你初步的多執行緒概念,在進一步學習執行緒同步等多執行緒核心知識之前,需要對多執行緒...