Java: 线程被synchronized和reentrantlock等阻塞时让出cpu不?

看到有说法,通常线程让出cpu

调用Thread.currentThread().yield();
IO阻塞
Sleep,  wait
线程结束

那么线程被synchronized和reentrantlock等阻塞时让出cpu不?

阅读 3.4k
2 个回答

如果不让cpu,那么在单核上怎么办,不就发生死锁了吗

不一定,jvm采用了一些锁优化策略,比如自旋锁,这就不会放弃cpu。
如果自旋时间到了仍然未能获得锁就会放弃cpu真正阻塞。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题