輕量級鎖會自旋嗎?
GitHub 19k Star 的Java工程師成神之路,不來了解一下嗎!
物件加鎖的入口在ObjectSynchronizer::enter(h_obj, lock, current); 這個方法中(http://github.com/openjdk/jdk/blob/9583e3657e43cc1c6f2101a64534564db2a9bd84/src/hotspot/share/runtime/synchronizer.cpp#L348 )。
enter方法程式碼如下:
大概過程就是,如果是輕量級鎖,則進行CAS(cas_set_mark(markWord::from_pointer(lock), mark)),否則,直接膨脹(inflate()),這個膨脹的過程中沒有自旋的操作。

「其他文章」