大家好,我是锋哥。今天分享关于 【什么是自旋 ?】面试题,希望对大家有帮助;
什么是自旋 ?
很多 synchronized 里面的代码只是一些很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题。
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网
既然synchronized 里面的代码执行得非常快,不妨让等待锁的线 程不要被阻塞,而是在 synchronized 的边界做忙循环,这就是自旋。如果做了多次忙循环发现还没有获得锁,再阻塞,这样可能是一种更好的策略。