中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java線程同步問題分析

發布時間:2021-12-01 17:04:08 來源:億速云 閱讀:133 作者:iii 欄目:編程語言

本篇內容主要講解“Java線程同步問題分析”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java線程同步問題分析”吧!

Java線程同步的基本實現思路還是比較容易理解的。我們可以給共享資源加一把鎖,這把鎖只有一把鑰匙。哪個線程獲取了這把鑰匙,才有權利訪問該共享資源。生活中,我們也可能會遇到這樣的例子。一些超市的外面提供了一些自動儲物箱。每個儲物箱都有一把鎖,一把鑰匙。人們可以使用那些帶有鑰匙的儲物箱,把東西放到儲物箱里面,把儲物箱鎖上,然后把鑰匙拿走。這樣,該儲物箱就被鎖住了,其他人不能再訪問這個儲物箱。(當然,真實的儲物箱鑰匙是可以被人拿走復制的,所以不要把貴重物品放在超市的儲物箱里面。于是很多超市都采用了電子密碼鎖。)

Java線程同步鎖這個模型看起來很直觀。但是,還有一個嚴峻的問題沒有解決,這個同步鎖應該加在哪里? 當然是加在共享資源上了。反應快的讀者一定會搶先回答。

沒錯,如果可能,我們當然盡量把同步鎖加在共享資源上。一些比較完善的共享資源,比如,文件系統,數據庫系統等,自身都提供了比較完善的同步鎖機制。我們不用另外給這些資源加鎖,這些資源自己就有鎖。

但是,大部分情況下,我們在代碼中訪問的共享資源都是比較簡單的共享對象。這些對象里面沒有地方讓我們加鎖。讀者可能會提出建議:為什么不在每一個對象內部都增加一個新的區域,專門用來加鎖呢?這種設計理論上當然也是可行的。問題在于,Java線程同步的情況并不是很普遍。如果因為這小概率事件,在所有對象內部都開辟一塊鎖空間,將會帶來極大的空間浪費。得不償失。

于是,現代的編程語言的設計思路都是把同步鎖加在代碼段上。確切的說,是把同步鎖加在“訪問共享資源的代碼段”上。這一點一定要記住,同步鎖是加在代碼段上的。

同步鎖加在代碼段上,就很好地解決了上述的空間浪費問題。但是卻增加了模型的復雜度,也增加了我們的理解難度。現在我們就來仔細分析“同步鎖加在代碼段上”的Java線程同步模型。

首先,我們已經解決了同步鎖加在哪里的問題。我們已經確定,同步鎖不是加在共享資源上,而是加在訪問共享資源的代碼段上。

其次,我們要解決的問題是,我們應該在代碼段上加什么樣的鎖。這個問題是重點中的重點。這是我們尤其要注意的問題:訪問同一份共享資源的不同代碼段,應該加上同一個同步鎖;如果加的是不同的同步鎖,那么根本就起不到同步的作用,沒有任何意義。

這就是說,同步鎖本身也一定是多個線程之間的共享對象。

到此,相信大家對“Java線程同步問題分析”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

柳林县| 玉山县| 关岭| 富蕴县| 朝阳县| 重庆市| 永福县| 江门市| 敦化市| 沭阳县| 象山县| 寻乌县| 石屏县| 遂平县| 鄯善县| 三门县| 平安县| 望都县| 岳西县| 长宁县| 区。| 怀安县| 房山区| 霍林郭勒市| 望江县| 南宁市| 大悟县| 江门市| 嘉鱼县| 仙居县| 栾城县| 昌黎县| 靖边县| 台山市| 黄浦区| 阳泉市| 富宁县| 饶河县| 宜春市| 宁国市| 仙桃市|