标签:read 相同 执行 高效 notifyall 队列 条件谓词 notify 优化
基于先检查后执行的状态依赖性操作在多线程下常常发生一些我们不希望的结果.因此有必要对状态依赖操作进行管理,
重试的实现方式 :
使得一组线程能够通过某种方式来等待特定条件变为真.队列中的元素为线程.
每个Java对象都可以作为一个锁, 每个锁都可以拥有一个条件队列. 内置锁的条件队列是非公平的.
Object.wait() 挂起当前线程. 并自动释放锁,
Thread.sleep() 挂起当前线程, 不会释放锁
条件谓词是某个状态依赖操作的前提条件.
条件等待的三元关系 : 加锁, 线程挂起, 条件谓词
条件谓词包含的状态变量必须由同一个锁来保护, 测试条件之前必须先持有这个锁, 锁对象和条件队列对象必须是同一个对象.
使用条件等待:
仅在满足一下两种情况事才可以使用 notify()
notify()比notifyall() 更高效,但是也更加危险
通过减少比必要的通知次数可以优化通知的性能.
同一个条件队列上等待不同条件谓词的情况
标签:read 相同 执行 高效 notifyall 队列 条件谓词 notify 优化
原文地址:https://www.cnblogs.com/virgosnail/p/9446524.html