我想要做的是让当前线程一次保持读取计数的数量。我为此编写了一个包装器,但我的问题是 ReadLock() 方法正在返回 ReentrantReadWriteLock.WriteLock 所以我没有多余的getThreadReadLockCount 之后。我想要的是 readLock() 方法应该返回我,这样我就可以有多余的 count 方法。有任何想法吗。?
private final ThreadLocal readLocksHeldByThread;
private static class ReadCounts {
public int value = 0;
}
public CustomReentrantReadWriteLock() {
super(true);
readLocksHeldByThread = new ThreadLocal() {
@Override
public Object initialValue() {
return new ReadCounts();
}
};
}
@Override
public synchronized ReadLock readLock() {
final ReadCounts myReadLocks = (ReadCounts) readLocksHeldByThread.get();
++myReadLocks.value;
return super.readLock();
}
public synchronized int getThreadReadLockCount() {
final ReadCounts currentReadLocks = (ReadCounts) readLocksHeldByThread.get();
return currentReadLocks.value;
}