同步鎖前傳 相關術語索引

2021-07-26 13:23:54 字數 2182 閱讀 3379

接下來,我想把同步鎖相關的內容梳理梳理。其實不單單是同步鎖,所有的juc的內容我都想理清楚。因為,時而感覺自己對這塊挺了解,時而又感覺模糊。因此我打算自己梳理一下,同時整理成筆記,一方面是方便自己,另一方面是方便別人。

鎖的相關術語比較多,有些還比較晦澀。很多的時候,我自己都不能準確表達,平時在講的時候也沒有太注意這些。因此接下來內容中出現有些用語不當,表述有偏差的地方,還希望您能慷慨指出。

在看原子性之前,我們先看看什麼是原子。

1. 原子,記得在化學中提到原子是這麼定義的

原子是元素能保持其化學性質的最小單位。 來自 wikipedia

因此我們認為原子是世界上最小的物質單位,具體有不可分割性

2. 原子操作

由此可見原子操作,是乙個不再分的操作。

如,a=0 是乙個子原操作。但a++, 不是原子操作,因為它是可以分解成int t = a + 1; a = t;兩個操作。

3. 原子性

由此便可引出原子性了,即是

乙個操作屬於原子操作的話,那麼我們稱它具有原子性

通常把不可斷的過程稱之為原語。

可見性,是指執行緒之間的可見性,乙個執行緒修改的狀態對另乙個執行緒是可見的。

其實我一直覺得,講清楚這個東西挺難的,但是理解它又挺容易。先做簡單解釋,當然這個並不嚴謹,但可以有個簡單的印象,後續在介紹volatile時,我們再具體來聊這個事。

記憶體是執行緒共享,執行緒a操作變數後,直接更新記憶體之後,執行緒b立馬可以看到執行緒a操作的效果。–這就是可見性。

我們把併發程序中與共享變數有關的程式段稱為臨界區。 —— 來自作業系統

可重入,顧名思義,即是可以遞迴、迴圈進入。現在這個解釋放在可重入鎖的可重入時,感覺怪怪的。本人語言比較差,感覺自己實在沒法用文字說清,直接上**用例子來看看吧。

public

synchronized

void

barfoo()

public

synchronized

void

bar()

public

synchronized

void

foo()

p.s. synchronized具有可重入性。

如果synchronized不具有可重入性的話,我們barfoo()就會出現死鎖,因為barfoo在呼叫bar時是沒辦法拿取到鎖的。這就是可重入性

再看一段**

private connection connection = null;

public

synchronized connection reconnect(final

int timesofretry) catch (exception e)

return connection;

}

也就是說能夠讓當前執行緒(鎖的持有者)多次的獲取鎖操作。

這個維基沒有,我自己來吧。公平性是對鎖存在情況競爭的情況下,誰先由誰先拿到鎖的策略而言的。假若,在競爭鎖的時候大家都來一起排隊,先到先得,我們認為這種策略是公平的。假若,不是嚴格依照這個次序獲取鎖的情況,我們就稱它是不公平。即是新來的人反倒有更大的機會拿到鎖,這就是不公平的。

在實現上,新來的人,先做一次檢查,如果有當時有鎖資源,就先會給新人。否則進入佇列跟大家一塊排隊*。

排他鎖,也叫獨佔鎖,顧名思義即是只能有乙個執行緒同時獲取這個鎖。也叫x鎖。

共享鎖,也叫讀鎖,允許多個執行緒持有這個鎖。稱s鎖。

自旋旋,是乙個不可重入性鎖。

自旋鎖是採用讓當前執行緒不停地的在迴圈體內執行實現的,當迴圈的條件被其他執行緒改變時才能進入臨界區。——來自ifeve

可重入鎖,也叫做遞迴鎖,指的是同一執行緒 外層函式獲得鎖之後 ,內層遞迴函式仍然有獲取該鎖的**。

加密術相關歷史典故

加密術和科學相比,歷史更為悠久。在很早以前,人們就已經開始利用密碼或者暗語傳遞資訊了。西元前 480年,古希臘幾乎就被十分強大的波斯帝國所征服。是一條藏於蠟封藥片上的秘密訊息,讓希臘人在大吃一驚的同時,提前做好了準備,並得以在薩拉公尺斯戰役中毫不留情地打敗了波斯人,才使得希臘進入了乙個 時代。如果沒...

Linux相關術術語全稱

grep global search regular expression and print out th line 全域性搜尋正則達表示式並列印出來。postfix portable operating system inte ce可移植作業系統介面,postfix是由ieee 電氣和電子工程師...

同步鎖2 互斥鎖

1 import threading 2import time 34 num 100 5def add 6global num7 s num 8 time.sleep 0.02 9 num s 1 1011 l list 12for i in range 100 13 t threading.thr...