国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

同步鎖前傳 相關(guān)術(shù)語(yǔ)索引

2019-11-14 12:02:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

接下來(lái),我想把同步鎖相關(guān)的內(nèi)容梳理梳理。其實(shí)不單單是同步鎖,所有的JUC的內(nèi)容我都想理清楚。因?yàn)椋瑫r(shí)而感覺自己對(duì)這塊挺了解,時(shí)而又感覺模糊。因此我打算自己梳理一下,同時(shí)整理成筆記,一方面是方便自己,另一方面是方便別人。

鎖的相關(guān)術(shù)語(yǔ)比較多,有些還比較晦澀。很多的時(shí)候,我自己都不能準(zhǔn)確表達(dá),平時(shí)在講的時(shí)候也沒(méi)有太注意這些。因此接下來(lái)內(nèi)容中出現(xiàn)有些用語(yǔ)不當(dāng),表述有偏差的地方,還希望您能慷慨指出。

術(shù)語(yǔ)索

原子性

在看原子性之前,我們先看看什么是原子。 1. 原子,記得在化學(xué)中提到原子是這么定義的

原子是元素能保持其化學(xué)性質(zhì)的最小單位。 來(lái)自 wikipedia

因此我們認(rèn)為原子是世界上最小的物質(zhì)單位,具體有不可分割性。 2. 原子操作 由此可見原子操作,是一個(gè)不再分的操作。 如,a=0 是一個(gè)子原操作。但a++, 不是原子操作,因?yàn)樗强梢苑纸獬?int t = a + 1; a = t; 兩個(gè)操作。 3. 原子性 由此便可引出原子性了,即是 一個(gè)操作屬于原子操作的話,那么我們稱它具有原子性

原語(yǔ)

通常把不可斷的過(guò)程稱之為原語(yǔ)。

是由若干條指令組成的,用于完成一定功能的一個(gè)過(guò)程。 PRimitive or atomic action 是由若干個(gè)機(jī)器指令構(gòu)成的完成某種特定功能的一段程序,具有不可分割性。即原語(yǔ)的執(zhí)行必須是連續(xù)的,在執(zhí)行過(guò)程中不允許被中斷。——百度百科

可見性

可見性,是指線程之間的可見性,一個(gè)線程修改的狀態(tài)對(duì)另一個(gè)線程是可見的。 其實(shí)我一直覺得,講清楚這個(gè)東西挺難的,但是理解它又挺容易。先做簡(jiǎn)單解釋,當(dāng)然這個(gè)并不嚴(yán)謹(jǐn),但可以有個(gè)簡(jiǎn)單的印象,后續(xù)在介紹volatile時(shí),我們?cè)倬唧w來(lái)聊這個(gè)事。

內(nèi)存是線程共享,線程A操作變量后,直接更新內(nèi)存之后,線程B立馬可以看到線程A操作的效果。–這就是可見性。

臨界區(qū)

我們把并發(fā)進(jìn)程中與共享變量有關(guān)的程序段稱為臨界區(qū)。 —— 來(lái)自操作系統(tǒng)

可重入

可重入,顧名思義,即是可以遞歸、循環(huán)進(jìn)入。現(xiàn)在這個(gè)解釋放在可重入鎖的可重入時(shí),感覺怪怪的。本人語(yǔ)言比較差,感覺自己實(shí)在沒(méi)法用文字說(shuō)清,直接上代碼用例子來(lái)看看吧。

public synchronized void barfoo() { ... bar(); ... foo(); ...}public synchronized void bar() {}public synchronized void foo() {}

P.S. synchronized具有可重入性。

如果synchronized不具有可重入性的話,我們barfoo()就會(huì)出現(xiàn)死鎖,因?yàn)閎arfoo在調(diào)用bar時(shí)是沒(méi)辦法拿取到鎖的。這就是可重入性

再看一段代碼

private Connection connection = null;public synchronized Connection reconnect(final int timesOfRetry) { if(connection == null) try { connection = create(); } catch (Exception e) { reconnect(timesOfRetry + 1); } return connection;}

也就是說(shuō)能夠讓當(dāng)前線程(鎖的持有者)多次的獲取鎖操作。

公平性

這個(gè)維基沒(méi)有,我自己來(lái)吧。公平性是對(duì)鎖存在情況競(jìng)爭(zhēng)的情況下,誰(shuí)先由誰(shuí)先拿到鎖的策略而言的。假若,在競(jìng)爭(zhēng)鎖的時(shí)候大家都來(lái)一起排隊(duì),先到先得,我們認(rèn)為這種策略是公平的。假若,不是嚴(yán)格依照這個(gè)次序獲取鎖的情況,我們就稱它是不公平。即是新來(lái)的人反倒有更大的機(jī)會(huì)拿到鎖,這就是不公平的。 在實(shí)現(xiàn)上,新來(lái)的人,先做一次檢查,如果有當(dāng)時(shí)有鎖資源,就先會(huì)給新人。否則進(jìn)入隊(duì)列跟大家一塊排隊(duì)*

排他鎖

排他鎖,也叫獨(dú)占鎖,顧名思義即是只能有一個(gè)線程同時(shí)獲取這個(gè)鎖。也叫X鎖。

共享鎖

共享鎖,也叫讀鎖,允許多個(gè)線程持有這個(gè)鎖。稱S鎖。

自旋鎖

自旋旋,是一個(gè)不可重入性鎖。

自旋鎖是采用讓當(dāng)前線程不停地的在循環(huán)體內(nèi)執(zhí)行實(shí)現(xiàn)的,當(dāng)循環(huán)的條件被其他線程改變時(shí)才能進(jìn)入臨界區(qū)。——來(lái)自ifeve

可重入鎖

可重入鎖,也叫做遞歸鎖,指的是同一線程 外層函數(shù)獲得鎖之后 ,內(nèi)層遞歸函數(shù)仍然有獲取該鎖的代碼。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 白山市| 集安市| 大英县| 镇雄县| 察哈| 枣阳市| 蓝山县| 亳州市| 阿坝| 雷州市| 青河县| 济宁市| 温宿县| 东台市| 泰和县| 湘乡市| 溆浦县| 新沂市| 铜鼓县| 调兵山市| 绥芬河市| 应用必备| 安国市| 大姚县| 林甸县| 洪雅县| 容城县| 霍州市| 浦城县| 东兰县| 江孜县| 张家川| 卢龙县| 平陆县| 隆化县| 尼勒克县| 湛江市| 会宁县| 祁阳县| 龙山县| 汉寿县|