1. 程式人生 > >java併發面試題(一)基礎

java併發面試題(一)基礎

在程式碼執行過程中,有3層對原子性的處理。第1層是lock或者synchronized,分別使用state和monitor的count去維護重入次數,使用unsafe包的cas來維護原子性,都是使用阻塞佇列完成對阻塞任務的等待;第2層是unsafe包內的cas的原子性實現,使用自旋的方式,來確保改變的數值的併發行;第3層是具體cpu核心層保證原子性的實現,在jvm執行時編譯過程,會在原子操作前加#LOCK彙編操作,對於#LOCK的具體cpu實現,會使用鎖匯流排或是cpu快取一致性原則mesi來實現,前者對資源損耗較大,後者不需要鎖匯流排,依賴cpu間通訊完成快取一致性操作。
基於上述3層對原子性的實現,保證了程式碼的邏輯結構的原子性操作需求.