谁能解析一下这一段加锁的代码?

发布于 2022-09-12 01:11:31 字数 254 浏览 31 评论 0

微信截图_20200119202339.png
这是一段reentranLock加锁的代码。notFUll和notEmpty是lock的两个条件。我有点儿看不明白。当某一个线程到了lock.lock()时,如果它获得了锁进入里面,而此时正好count==items.length,进入了await(),它在等待。这不是死锁了吗?这时候,它还没有unlock()。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋叶绚丽 2022-09-19 01:11:31

await 会释放锁

恬淡成诗 2022-09-19 01:11:31

await

Causes the current thread to wait until it is signalled or interrupted.

The lock associated with this Condition is atomically released and the current thread becomes disabled for thread scheduling purposes and lies dormant until one of four things happens:
......

await 会自动解锁。

情徒 2022-09-19 01:11:31

没看过java,不过这应该是条件变量吧?去看条件变量的wait操作,会unlock锁并block在这里,等待被唤醒,唤醒时首先会争夺锁,成功加锁后才能继续向下执行。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文