在可重入锁中等待条件

在可重入锁中等待条件,第1张

在可重入锁中等待条件

双方

Lock
synchronized
允许一个线程等待的时候,另一个线程可以获得锁放弃锁。要停止等待,线程必须重新获取锁。

注意:它们没有完全释放它,并且如果您进行堆栈跟踪,则可能有多个线程似乎同时持有该锁,但其中最多一个线程将在运行(其余线程将被阻塞)

从Condition.await()

与此条件相关联的锁被原子释放,并且出于线程调度目的,当前线程被禁用,并且处于休眠状态,直到发生以下四种情况之一:

  • 其他一些线程为此条件调用signal()方法,并且当前线程恰好被选择为要唤醒的线程;要么
  • 其他一些线程为此条件调用signalAll()方法。要么
  • 其他一些线程中断当前线程,并支持中断线程挂起;要么
  • 发生“虚假唤醒”。

在所有情况下,在此方法可以返回之前,当前线程必须重新获取与此条件关联的锁。当线程返回时,可以保证保持此锁



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5165747.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存