輕量級鎖會自旋嗎?

語言: CN / TW / HK

GitHub 19k Star 的Java工程師成神之路,不來了解一下嗎!

物件加鎖的入口在ObjectSynchronizer::enter(h_obj, lock, current); 這個方法中(https://github.com/openjdk/jdk/blob/9583e3657e43cc1c6f2101a64534564db2a9bd84/src/hotspot/share/runtime/synchronizer.cpp#L348 )。

enter方法程式碼如下:

大概過程就是,如果是輕量級鎖,則進行CAS(cas_set_mark(markWord::from_pointer(lock), mark)),否則,直接膨脹(inflate()),這個膨脹的過程中沒有自旋的操作。

(全文完)
掃描二維碼,關注作者微信公眾號