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

溫馨提示×

溫馨提示×

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

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

Java中怎么實現多線程同步

發布時間:2021-08-10 16:14:32 來源:億速云 閱讀:152 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關Java中怎么實現多線程同步,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

讓我們從JVM的角度來看看鎖這個概念:

在Java程序運行時環境中,JVM需要對兩類線程共享的數據進行協調:

1)保存在堆中的實例變量

2)保存在方法區中的類變量

這兩類數據是被所有線程共享的。(程序不需要協調保存在Java 棧當中的數據。因為這些數據是屬于擁有該棧的線程所私有的。)

在java虛擬機中,每個對象和類在邏輯上都是和一個監視器相關聯的。對于對象來說,相關聯的監視器保護對象的實例變量。對于類來說,監視器保護類的類變量。
(如果一個對象沒有實例變量,或者一個類沒有變量,相關聯的監視器就什么也不監視。)

  • 詳解Java多線程開發中的數據同步

  • 淺析Java多線程技術中所使用的方法

  • Java多線程學習總結(一)

  • Java多線程學習總結(二)

  • Java多線程的相關機制

為了實現監視器的排他性監視能力,java多線程同步虛擬機為每一個對象和類都關聯一個鎖。代表任何時候只允許一個線程擁有的特權。線程訪問實例變量或者類變量不需鎖。但是如果線程獲取了鎖,那么在它釋放這個鎖之前,就沒有其他線程可以獲取同樣數據的鎖了。(鎖住一個對象就是獲取對象相關聯的監視器)

類鎖實際上用對象鎖來實現。當虛擬機裝載一個class文件的時候,它就會創建一個java.lang.Class類的實例。當鎖住一個對象的時候,實際上鎖住的是那個類的Class對象。

一個線程可以多次對同一個對象上鎖。對于每一個對象,java虛擬機維護一個加鎖計數器,線程每獲得一次該對象,計數器就加1,每釋放一次,計數器就減 1,當計數器值為0時,鎖就被完全釋放了。

java多線程同步不需要自己動手加鎖,對象鎖是java虛擬機內部使用的。在java程序中,只需要使用synchronized塊或者synchronized方法就可以標志一個監視區域。當每次進入一個監視區域時,java 虛擬機都會自動鎖上對象或者類。

看完上述內容,你們對Java中怎么實現多線程同步有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

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

AI

达尔| 商城县| 浦东新区| 库车县| 黎平县| 江津市| 镇平县| 高尔夫| 顺昌县| 成安县| 兴仁县| 娄烦县| 绥宁县| 彰化市| 阿拉善右旗| 吉木乃县| 郧西县| 平武县| 时尚| 屯留县| 迁安市| 元氏县| 阜宁县| 青浦区| 裕民县| 榆中县| 青冈县| 阿鲁科尔沁旗| 通州市| 环江| 新乡县| 马鞍山市| 清河县| 成都市| 厦门市| 海原县| 保康县| 旬阳县| 尉氏县| 基隆市| 孟村|