併發編程高級面試面試題
(答案+領取方式見個人主頁)
Synchronized 相關問題
- Synchronized 用過嗎 , 其原理是什麼 ?
- 你剛纔提到獲取對象的鎖,這 個“ 鎖 ”到底是什麼?如何確定對象的鎖 ?
- 什麼是可重入性,爲什麼說 Synchronized 是可重入鎖?
- JVM 對 Java 的原生鎖做了哪些優化?
- 爲什麼說 Synchronized 是非公平鎖?
- 什麼是鎖消除和鎖粗化 ?
- 爲什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原又是什麼?什麼是 CAS,它有什麼特性?
- 樂觀鎖一定就是好的嗎?
可重入鎖 ReentrantLock 及其他顯式鎖相關問題
- 跟 Synchronized 相 比 , 可重入鎖 ReentrantLock 其實現原理有什麼不同?
- 那麼請談談 AQS 框架是怎麼回事兒?
- 請儘可能詳盡地對比下 Synchronized 和 ReentrantLock0 的異同。
- ReentrantLock 是如何實現可重入性的?
- 除了 ReetrantLock,你還接觸過 JUC 中的哪些併發工具?
- 請談談 ReadWriteLock 和 StampedLock。
- 如何讓 Java 的線程彼此同步?你瞭解過哪些同步器?請分別介紹下 。
- CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?
Java 線程池相關問題
- Java 中的線程池是如何實現的?
- 創建線程池的幾個核心構造參數?
- 線程池中的線程是怎麼創建的?是一開始就隨着線程池的啓動創建好的嗎?
- 既然提到可以通過配置不同參數創建出不同的線程池,那麼Java 中默認實現好的線程池又有哪些呢?請比較它們的異同。
- 如何在 Java 線程池中提交線程?
Java內存模型相關問題
- 什麼是 Java 的內存模型, Java 中各個線程是怎麼彼此看到對方的變量的?
- 請談談 volatile 有什麼特點,爲什麼它能保證變量對所有線程的可見性?
- 既然 volatile 能夠保證線程間的變量可見性,是不是就意味着基於 volatile 變量的運算就是併發安全的?
- 請對比下 volatile 對比 Synchronized 的異同。
- 請談談 ThreadLocal 是怎麼解決併發安全的?
- 很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什麼?