
任意一个Java对象, 都拥有一组监视器方法 (定义在java.lang.Object上) , 主要包括wait() 、 wait(long timeout)、 notify()以及notifyAll()方法, 这些方法与synchronized同步关键字配合, 可以 实现等待/通知模式 。 Condition接 口也提供了类似Object的监视器方法, 与Lock配合可以实现等 待/通知模式。
通过对比Object的监视器方法和Condition接口,可以更详细地了解Condition的特性
Condition定义了等待/通知两种类型的方法, 当前线程调用这些方法时, 需要提前获取到 Condition对象关联的锁 。 Condition对象是由Lock对象 (调用Lock对象的newCondition()方法) 创 建出来的, 换句话说, Condition是依赖Lock对象的。
当调用await()方法后, 当前线程会 释 放锁并在此等待, 而其他线程调用 Condition对象的signal()方法, 通知当 前线程后, 当前线程 才从await()方法 返回, 并且在返回前已经获取了锁。一个线程进入等待状态----释放锁— -线程被唤醒----线程获取锁----等待 状态结束。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)