国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java關(guān)于并發(fā)模型中的兩種鎖知識(shí)點(diǎn)詳解

瀏覽:99日期:2022-08-14 18:43:27
1、悲觀鎖

悲觀鎖假設(shè)最壞的情況(如果果你不鎖門(mén),那么搗蛋鬼就會(huì)闖入并搞得一團(tuán)糟),只有在確保其他線程不受干擾(獲得正確的鎖)的情況下才能執(zhí)行。

一般實(shí)現(xiàn)如獨(dú)占鎖等。

安全性更高,但中低并發(fā)性效率更低。

2、樂(lè)觀鎖

樂(lè)觀鎖通過(guò)沖突檢查機(jī)制判斷更新過(guò)程中是否存在其他線程干擾。如果存在,操作將失敗,重試(也可以不重試)。

CAS等常見(jiàn)實(shí)現(xiàn)。

一些樂(lè)觀鎖削弱了一致性,但在中低并發(fā)性下效率大大提高。

知識(shí)點(diǎn)擴(kuò)展:

并行與分布式編程

關(guān)注的是復(fù)雜軟件系統(tǒng)的構(gòu)造,“復(fù)雜”是指多線程、分布式與GUI程序

在鎖與同步這一節(jié)中,詳細(xì)介紹了如何設(shè)計(jì)線程安全的ADT

并發(fā)

在我們的并發(fā)介紹中,我們看到了兩種并發(fā)編程模型:共享內(nèi)存和消息傳遞。

• 在共享內(nèi)存模型中 :并發(fā)模塊通過(guò)在內(nèi)存中讀取和寫(xiě)入共享可變對(duì)象來(lái)進(jìn)行交互。在單個(gè)Java進(jìn)程中創(chuàng)建多個(gè)線程是我們共享內(nèi)存并發(fā)的主要示例。

• 在消息傳遞模型中:并發(fā)模塊通過(guò)通信通道相互發(fā)送不可變消息進(jìn)行交互。該通信通道可以通過(guò)網(wǎng)絡(luò)連接不同的計(jì)算機(jī),如我們的一些初始示例:Web瀏覽,即時(shí)消息等。

對(duì)于鎖,這是Java語(yǔ)言提供的內(nèi)嵌機(jī)制,每個(gè)Object都有相關(guān)聯(lián)的lock;

首先來(lái)了解一下java鎖的相關(guān)概念

Java的內(nèi)置鎖:每個(gè)java對(duì)象都可以用做一個(gè)實(shí)現(xiàn)同步的鎖,這些鎖成為內(nèi)置鎖。線程進(jìn)入同步代碼塊或者代碼方法的時(shí)候會(huì)自動(dòng)獲得該鎖,在退出同步代碼塊或者方法的時(shí)候則會(huì)釋放該鎖。獲得內(nèi)置鎖的唯一途徑就是進(jìn)入這個(gè)鎖的保護(hù)的同步代碼塊或者方法。

Java內(nèi)置鎖是一個(gè)互斥鎖:就是最多一個(gè)程序能夠得到這個(gè)鎖。當(dāng)多個(gè)線程想要對(duì)某個(gè)mutable類(lèi)型的ADT操作時(shí),就是修改它的值時(shí),鎖能夠劫持這些線程的操作,阻塞他們,只有之前的線程結(jié)束調(diào)用時(shí),釋放這個(gè)鎖,后面的線程才能獲得該鎖,否則一直等待下去。

用法

同步和鎖:阻止了多線程在同一時(shí)間內(nèi)對(duì)可變數(shù)據(jù)的共享操作,即程序員來(lái)負(fù)責(zé)多線程之間對(duì)mutable數(shù)據(jù)的共享操作,通過(guò)”同步”策略,避免多線程同時(shí)訪問(wèn)數(shù)據(jù),使用鎖機(jī)制,獲取對(duì)數(shù)據(jù)的獨(dú)家mutation權(quán),其他線程被阻塞,不得訪問(wèn),即不可修改。

Java同步鎖實(shí)現(xiàn)方法

synchronized 關(guān)鍵詞修飾

wait、notify、notifyAll的使用

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 嘉禾县| 蓝山县| 剑川县| 榆中县| 龙胜| 高碑店市| 紫云| 盐边县| 肃南| 应用必备| 阿城市| 平潭县| 永嘉县| 哈巴河县| 米脂县| 九龙县| 新沂市| 通渭县| 镇康县| 伊春市| 高唐县| 雅安市| 麟游县| 鄂伦春自治旗| 海门市| 孝义市| 苏尼特右旗| 康平县| 西林县| 汤阴县| 卓资县| 凤凰县| 凤阳县| 贵定县| 雷山县| 华亭县| 黑龙江省| 资溪县| 江西省| 修武县| 乐清市|