成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

萬能的synchronized

jzzlee / 3379人閱讀

摘要:的萬能原子,可見,有序原子性如果一個變量事先未被鎖定,那么不允許對其操作,也不能一個被其他線程鎖定的變量。隱式使用和,保證了和操作之間的代碼是原子的。

synchronized的萬能(原子,可見,有序) 原子性

如果一個變量事先未被Lock鎖定,那么不允許對其unlock操作,也不能unlock一個被其他線程鎖定的變量。

synchronized隱式使用lock和unlock,保證了lock和unlock操作之間的代碼是原子的。

可見性 1.synchronized的內(nèi)存語義

八大happens-before規(guī)則中的兩條:

對一個變量執(zhí)行l(wèi)ock操作,必須清空工作內(nèi)存中此變量的值,在執(zhí)行引擎使用該變量之前,重新執(zhí)行l(wèi)oad或assign。

對一個變量unlock操作之前,必須把此變量同步會主內(nèi)存。
也就是說,

當一個線程獲取一個鎖,這個線程重新從主內(nèi)存加載最新的數(shù)據(jù)到本地內(nèi)存;

當一個線程釋放一個鎖的時候,將該線程本地內(nèi)存中的最新最正確的數(shù)據(jù)同步到主內(nèi)存。

兩者結(jié)合,可以看出鎖的釋放,獲取的內(nèi)存語義可以類比volatile變量的讀/寫的內(nèi)存語義,鎖的釋放相當于volatile的寫,鎖的獲取相當于volatile的寫。所以鎖具備內(nèi)存可見性。

2.如何實現(xiàn)這樣的內(nèi)存語義

在JVM規(guī)范中可以看到JVM中synchronized的實現(xiàn)原理,JVM基于進入和退出Monitor來實現(xiàn)方法同步和代碼同步,實現(xiàn)細節(jié)不一樣,代碼同步使用monitorenter,monitorexit兩個指令實現(xiàn),編譯器會在同步代碼開始處插入monitorenter指令,在結(jié)束處或者異常處插入monitorexit指令,==這兩個字節(jié)碼指令隱式使用lock和unlock操作==。

有序性

同一時間只有一個線程可以對一個變量進行l(wèi)ock操作,像是把多線程的環(huán)境變?yōu)榱藛尉€程,天然具備有序性(程序順序規(guī)則)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71119.html

相關(guān)文章

  • Java Monitor(管程)

    摘要:當前線程使用將對象頭的替換為鎖記錄指針,如果成功,當前線程獲得鎖如果失敗,表示其他線程競爭鎖,當前線程便嘗試使用自旋來獲取鎖。重量級鎖是悲觀鎖的一種,自旋鎖輕量級鎖與偏向鎖屬于樂觀鎖。 操作系統(tǒng)在面對線程間同步的時候,會支持例如semaphore信號量和mutex互斥量等同步原語,而monitor是在編程語言中被實現(xiàn)的,下面介紹一下java中monitor(監(jiān)視器/管程:管理共享變量以...

    caspar 評論0 收藏0
  • 基礎(chǔ)知識-cas,synchronized,lock,volatile,concurrent大集合

    摘要:加鎖,多線程為了防止競爭資源,即防止對同一資源進行并發(fā)操作。釋放占有的對象鎖,線程進入等待池,釋放而其他正在等待的線程即可搶占此鎖,獲得鎖的線程即可運行程序。休眠結(jié)束,線程重新獲得執(zhí)行代碼。則是喚醒所有等待的線程。 先了解一下java 模型 showImg(https://segmentfault.com/img/bVbid2W?w=423&h=377); (1)每個線程都有自己的本地...

    sf190404 評論0 收藏0
  • Java深入-框架技巧

    摘要:從使用到原理學(xué)習(xí)線程池關(guān)于線程池的使用,及原理分析分析角度新穎面向切面編程的基本用法基于注解的實現(xiàn)在軟件開發(fā)中,分散于應(yīng)用中多出的功能被稱為橫切關(guān)注點如事務(wù)安全緩存等。 Java 程序媛手把手教你設(shè)計模式中的撩妹神技 -- 上篇 遇一人白首,擇一城終老,是多么美好的人生境界,她和他歷經(jīng)風(fēng)雨慢慢變老,回首走過的點點滴滴,依然清楚的記得當初愛情萌芽的模樣…… Java 進階面試問題列表 -...

    chengtao1633 評論0 收藏0
  • [Java并發(fā)-6]“管程”-java管程初探

    摘要:語言在之前,提供的唯一的并發(fā)原語就是管程,而且之后提供的并發(fā)包,也是以管程技術(shù)為基礎(chǔ)的。但是管程更容易使用,所以選擇了管程。線程進入條件變量的等待隊列后,是允許其他線程進入管程的。并發(fā)編程里兩大核心問題互斥和同步,都可以由管程來幫你解決。 并發(fā)編程這個技術(shù)領(lǐng)域已經(jīng)發(fā)展了半個世紀了。有沒有一種核心技術(shù)可以很方便地解決我們的并發(fā)問題呢?這個問題, 我會選擇 Monitor(管程)技術(shù)。Ja...

    Steve_Wang_ 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<