JUC筆記

下面來具體講解volatile的兩條實(shí)現(xiàn)原則。

1)Lock前綴指令會(huì)引起處理器緩存回寫到內(nèi)存

2)一個(gè)處理器的緩存回寫到內(nèi)存會(huì)導(dǎo)致其他處理器的緩存無效。


利用synchronized實(shí)現(xiàn)同步的基礎(chǔ):Java中的每一個(gè)對(duì)象都可以作為鎖。具體表現(xiàn)

為以下3種形式。

·對(duì)于普通同步方法,鎖是當(dāng)前實(shí)例對(duì)象。

·對(duì)于靜態(tài)同步方法,鎖是當(dāng)前類的Class對(duì)象。

·對(duì)于同步方法塊,鎖是Synchonized括號(hào)里配置的對(duì)象。


鎖一共有4種狀態(tài),級(jí)別從低到高依次是:無鎖狀態(tài)、偏向鎖狀態(tài)、輕量級(jí)鎖狀

態(tài)和重量級(jí)鎖狀態(tài),這幾個(gè)狀態(tài)會(huì)隨著競(jìng)爭(zhēng)情況逐漸升級(jí)。鎖可以升級(jí)但不能降級(jí)



處理器如何實(shí)現(xiàn)原子操作

第一個(gè)機(jī)制是通過總線鎖保證原子性

第二個(gè)機(jī)制是通過緩存鎖定來保證原子性

?

Java如何實(shí)現(xiàn)原子操作

在Java中可以通過循環(huán)CAS的方式來實(shí)現(xiàn)原子操作。

?

CAS實(shí)現(xiàn)原子操作的三大問題

1)ABA問題。2)循環(huán)時(shí)間長(zhǎng)開銷大。3)只能保證一個(gè)共享變量的原子操作。

?

?

在并發(fā)編程中,需要處理兩個(gè)關(guān)鍵問題:線程之間如何通信及線程之間如何同步

線程之間的通信機(jī)制有兩種:共享內(nèi)存消息傳遞。

?

Java線程之間的通信由Java內(nèi)存模型(本文簡(jiǎn)稱為JMM)控制

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Java8張圖 11、字符串不變性 12、equals()方法、hashCode()方法的區(qū)別 13、...
    Miley_MOJIE閱讀 3,894評(píng)論 0 11
  • 從三月份找實(shí)習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時(shí)芥藍(lán)閱讀 42,787評(píng)論 11 349
  • ② 古瀾斯森林。 濃重的迷霧下,漸弱微暗的光線,在森林深處越發(fā)的陰森晦暗,極致的異常死寂,驟然發(fā)出巨大的...
    柯予宸閱讀 568評(píng)論 0 0
  • 或許是你現(xiàn)在一開始就已經(jīng)將“不喜歡我”作為了評(píng)價(jià)我的大背景,所以,才對(duì)我處處冷淡的吧,無論我怎么努力,也只會(huì)...
    毛球一樣的傻子閱讀 527評(píng)論 0 0
  • 繪畫的過程是先需得法,中需有法,后需變法,無法之法乃為至法,大師無法。關(guān)于繪畫,講法是階段的,也是分階段的過了那個(gè)...
    畫家方惠中閱讀 309評(píng)論 2 3

友情鏈接更多精彩內(nèi)容