日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java进阶教程-马士兵

發布時間:2023/12/15 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java进阶教程-马士兵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,操作系統原理
ALU是運算單元,PC是程序計數器,Registers寄存器存儲運算的數據。L1級緩存,L2級緩存方便對數據進行訪問。
攜程面試問到volatile可見性的實現,其實是用volatile聲明的變量如果被某一個線程修改,首先該值會更新到主存去,通過對讀,寫設置內存屏障,注意兩點1、一旦完成寫入,任何訪問這個字段的線程將會得到最新的值。2、在寫入前,保證所有之前發生的事已經發生,并且任何更新過的數據值也是可見的,因為內存屏障會把之前的寫入值都刷新到緩存。這里JVM要求的實現比較嚴格,存儲和存儲,讀取和讀取之間都有內存屏障(實現內存屏障的方式可能是lock鎖總線,可能是原語)

二,多線程高并發
1,synchronized
必須是可重入鎖:為什么?
當一個子類對象獲取了鎖,在執行過程中需要調用該子類父類的synchronized方法,由于都要獲取一個對象的鎖,如果不能重入,就會導致死鎖。
synchronized鎖的是對象
synchronized鎖定的方法和非鎖定的方法相互執行不沖突
synchronized不要用String,Integer,Long這些類型

synchronized底層實現(Hotspot的實現)

  • jdk早期的重量級鎖 - 找os申請鎖。
  • 后期改進引入鎖升級策略 - sync(obj),第一個線程來獲取時,再Markword上記錄線程ID(偏向鎖,可重入的基礎),若有線程爭用,則升級為自旋鎖,(循環嘗試獲取鎖,嘗試10次),10次之后升級為OS層面的鎖
  • 2,volatile
    保證線程可見性:
    MESI 緩存一致性協議保證不同CPU之間的緩存可見性

    禁止指令重排序
    雙重校驗鎖中new的問題

    總結

    以上是生活随笔為你收集整理的Java进阶教程-马士兵的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。