我在获取写锁定时遇到问题,然后使用 ReentrantReadWriteLock 执行某些操作
有两个类说ClassA和ClassB ClassA持有写锁定 ClassB有读锁
public static final ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); //defined in singleton class
ClassA{
public void onMessage(Message msg){
if(update is received from UI){
lock.writeLock().lock();
try{
//critical code here
}finally{
lock.writeLock().unlock();
}
}
}
}
ClassB{
public void onMessage(Message msg){
if(NO update is received from UI){
lock.readLock().lock();
try{
//critical code here
}finally{
lock.readLock().unlock();
}
}
}
}
用户可以更新/创建UI,当此事件发生时,我在ClassA中激活写锁定,以便阻止ClassB的读者。
但由于一些奇怪的原因,ClassA正在等待(无限)获取Write lock !!
我们可以重置不同线程获取的所有锁,然后获取写锁吗? 如果还有其他方法,请建议..