很多synchronized里面的代碼只是一些很簡(jiǎn)單的代碼,執(zhí)行時(shí)間非???,此時(shí)等待的線程都加鎖可能是一種不太值得的操作,因?yàn)榫€程阻塞涉及到用戶態(tài)和內(nèi)核態(tài)切換的問(wèn)題。
既然synchronized里面的代碼執(zhí)行得非常快,不妨讓等待鎖的線程不要被阻塞,而是在synchronized 的邊界做忙循環(huán),這就是自旋。
如果做了多次循環(huán)發(fā)現(xiàn)還沒(méi)有獲得鎖,再阻塞,這樣可能是一種更好的策略。