線程的安全性問題體現在:
- 原子性:一個或者多個操作在 CPU 執行的過程中不被中斷的特性
- 可見性:一個線程對共享變量的修改,另外一個線程能夠立刻看到
- 有序性:程序執行的順序按照代碼的先后順序執行
導致原因:
- 緩存導致的可見性問題
- 線程切換帶來的原子性問題
- 編譯優化帶來的有序性問題
解決辦法:
- JDK Atomic開頭的原子類、synchronized、LOCK,可以解決原子性問題
- synchronized、volatile、LOCK,可以解決可見性問題
- Happens-Before 規則可以解決有序性問題
- Java 面試題匯總PC端瀏覽【點這里】
- Java 面試題匯總小程序瀏覽,掃二維碼