概念: 我們知道有活鎖 死鎖,活鎖里面有悲觀鎖和樂觀鎖
1.悲觀鎖,我的理解是兩個男孩張三和李四,在約同一個女孩戀愛,每次都是張三約成功了,李四不成功,所有李四有點悲催,他就是一個悲觀鎖,
對于程序來說同一個資源,兩個線程去占用,但是沒有都是一個線程對資源占用,另一個無法占用,Synchronized。
2.樂觀鎖,我的理解是兩個男孩張三和李四,在約同一個女孩戀愛,都可以約到,但是女孩同時只能約一個,只能在一個約完了另一個才可以約。
對于程序來說同一個資源,兩個線程去占用,一次只能是一個線程去占用資源,在Java中,CAS是樂觀鎖的,但是為了防止ABA問題,又加了時間版本來防止ABA問題。
3.死鎖 我的理解是兩個男孩張三和李四,在約同一個女孩戀愛,但是女孩答應了兩個人,于是兩個人開車來接,可是在十字路口,兩個人你不讓我,我不讓你,最后都約不到。
鎖會帶來CUP上下文的切換,影響效率。
? ? 在Java中,每個對象都有一個mark標記,
圖片來源:ifeve.com/java-synchronized/%E8%BD%BB%E9%87%8F%E7%BA%A7%E9%94%81/