谁能解析一下这一段加锁的代码?
这是一段reentranLock加锁的代码。notFUll和notEmpty是lock的两个条件。我有点儿看不明白。当某一个线程到了lock.lock()时,如果它获得了锁进入里面,而此时正好count==items.length,进入了await(),它在等待。这不是死锁了吗?这时候,它还没有unlock()。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
await 会释放锁
await
await 会自动解锁。
没看过java,不过这应该是条件变量吧?去看条件变量的wait操作,会unlock锁并block在这里,等待被唤醒,唤醒时首先会争夺锁,成功加锁后才能继续向下执行。