很多 synchronized 里面的代码只是一种很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题,既然 synchronized 里面的代码执行的非常快,不妨让等待的线程不要被阻塞,而是在 synchronized 的边界作忙循环,这就是自旋,如果做了多次循环发现还没有获得锁,再阻塞这样可能是一种更好的策略。
56. synchronized:什么是自旋?
最新推荐文章于 2023-06-13 22:47:12 发布
很多 synchronized 里面的代码只是一种很简单的代码,执行时间非常快,此时等待的线程都加锁可能是一种不太值得的操作,因为线程阻塞涉及到用户态和内核态切换的问题,既然 synchronized 里面的代码执行的非常快,不妨让等待的线程不要被阻塞,而是在 synchronized 的边界作忙循环,这就是自旋,如果做了多次循环发现还没有获得锁,再阻塞这样可能是一种更好的策略。