国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

java線程的幾種狀態(tài) 多個線程可以讀一個變量,只有一個線程可以對這個變量進(jìn)行寫,到底要不要加鎖?

多個線程可以讀一個變量,只有一個線程可以對這個變量進(jìn)行寫,到底要不要加鎖?下面簡要解釋一下原因:鎖定是因為操作不是原子的。讓我們用操作一來解釋它。看下面兩個圖。我這個操作需要看上面的第二個圖,你能很清

多個線程可以讀一個變量,只有一個線程可以對這個變量進(jìn)行寫,到底要不要加鎖?

下面簡要解釋一下原因:

鎖定是因為操作不是原子的。讓我們用操作一來解釋它??聪旅鎯蓚€圖。

我這個操作需要

看上面的第二個圖,你能很清楚地理解這個過程嗎?

鎖定是為了確保上述三個步驟是原子操作。

回到問題上來,只有一個線程要寫,沒有競爭,所以不需要鎖定。

但是,如果你看第一張圖片,因為主內(nèi)存和本地內(nèi)存的存在

在一個線程寫入后,其他線程無法立即看到它。這就是可見性問題。

添加volatile關(guān)鍵字后,它將在操作后強制工作內(nèi)存和主內(nèi)存同步,以確保其他線程可以立即看到它。

下面對sleep()和wait()的描述哪個是正確的?

對于sleep()和wait(),錯誤如下:(1)A.sleep是thread類的方法,wait是object類的方法;(2)B.sleep不釋放object鎖,wait放棄object鎖;(3)C.sleep暫停線程,但仍然保持監(jiān)視狀態(tài),之后會自動恢復(fù)結(jié)束;(4)d等待后,進(jìn)入等待鎖池。只有在向?qū)ο蟀l(fā)出notify方法之后,它才能獲得對象鎖并進(jìn)入運行狀態(tài)。答:dsleep是thread類的一個方法,它使線程在指定的時間內(nèi)暫停執(zhí)行,給其他線程執(zhí)行的機會,但監(jiān)視狀態(tài)保持不變,并在該時間后自動恢復(fù)。調(diào)用sleep不會釋放對象鎖。Wait是object類的一個方法。對此對象調(diào)用wait方法會導(dǎo)致線程放棄對象鎖并進(jìn)入等待此對象的等待鎖池。只有在此對象上發(fā)出notify方法(或notifyAll)后,線程才能進(jìn)入對象鎖池,準(zhǔn)備獲取對象鎖并進(jìn)入操作狀態(tài)。