日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java多線程同步如何從JVM的角度體會

我們在使用Java多線程同步的時候需要了解很多的知識,其中Java多線程同步機制實際上是靠鎖的概念來控制的。這個問題就需要我們引起注意,那么在Java程序當中,鎖是如何體現(xiàn)的呢?

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供涼山州網(wǎng)站建設(shè)、涼山州做網(wǎng)站、涼山州網(wǎng)站設(shè)計、涼山州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、涼山州企業(yè)網(wǎng)站模板建站服務(wù),10多年涼山州做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

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

在Java程序運行時環(huán)境中,JVM需要對兩類線程共享的數(shù)據(jù)進行協(xié)調(diào):

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

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

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

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

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

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

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

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

看到這里,我想你們一定都疲勞了吧?當一個有限的資源被多個線程共享的時候,為了保證對共享資源的互斥訪問,我們一定要給他們排出一個先來后到。而要做到這一點,對象鎖在這里起著非常重要的作用。
 


網(wǎng)站題目:Java多線程同步如何從JVM的角度體會
分享鏈接:http://m.5511xx.com/article/cdgcgic.html