1. 程式人生 > 實用技巧 >重讀JDK原始碼(一):基礎相關

重讀JDK原始碼(一):基礎相關

楔子

距離上次讀《Java程式設計思想》已經過了很久,工作中一直在不斷寫邏輯,造輪子,但是對JDK原始碼反倒越來越陌生了,另外工作一段時間後也大概知道哪些是最常用的了,所以這次有針對性地重讀一下,並好好做一次總結

基礎相關

avatar

注意點

  • Long這個快取機制得注意下,有次配合IdentityHashMap使用時,使用Integer作為key時沒去new出新物件,導致put時其實一直在用的是同一個記憶體地址,故不符合預期
  • volatile是JVM提供的輕量級同步機制,這東西的三個特性是:保證可見性、不保證原子性、禁止指令重排,假如volatile關鍵字時,在彙編層會多出一個lock字首指令,這個lock指令相當於記憶體屏障,幹了三件"微小的工作":
    • 確保指令重排時不會把其後面的指令排到記憶體屏障前面的位置,也不會把前面的指令排到記憶體屏障之後,即保證指令操作的有序性
    • 強制將對快取的修改操作立即寫入記憶體
    • 非同步通知並失效其他CPU中的快取