互聯網大廠高頻重點面試題2

AtomicInteger

  1. ABA:狸貓換太子
  2. 解決:理解院子引用+新增機制(版本號,類似時間戳)

  1. 公平鎖和非公平鎖 - 併發包中的 ReentrantLock
    1. 指定構造函數的boolean獲得,默認非公平鎖
    2. 公平:多線程按申請所得順序獲取鎖,先來後到
    3. 非公平:多線程獲取所得順序不按照申請順序,可能後申請的線程比先申請的線程遊戲拿貨去鎖,如果嘗試失敗,再採用公平鎖方式。高併發時,可能造成優先級翻轉或飢餓線象。吞吐量比公平鎖大。
    4. synchronized 是非公平鎖
  2. 可重入鎖(遞歸鎖)

code interview.thread.ReentrantLockDemo

1. 概念:同一線程外層函數獲得鎖之後,內層遞歸函數仍然能獲取該所的代碼。同一線程在外層方法獲取鎖後,進入內層方會自動獲取鎖。即,線程可進入任何一個他已經擁有的鎖所同步者的代碼塊。
2. ReentrantLock/Synchronized 是可重入鎖
3. 作用:避免死鎖
  1. 自旋鎖

code interview.thread.SpinLockDemo

1. 基於:unsafe類 + CAS(compare and set)
2. 概念:嘗試獲取鎖的線程不會阻塞,採用循環方式獲取鎖,好處是減少線程上下文切換的消耗,缺點是循環會消耗CPU
  1. etc

code interview.thread.ReadWriteLockDemo

1. 獨佔鎖:該鎖一次只能被一個線程持有。ReentrantLock、Synchronized都是獨佔鎖。
2. 共享鎖:該鎖可被鎖個線程持有。
3. ReentrantReadWriteLock:讀是共享鎖,寫是獨佔鎖。該鎖的共享鎖保證併發讀是高效的,讀讀可共存,讀寫、寫讀、寫寫過程互斥。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章