私がやろうとしているのは、現在のスレッドが一度に保持する読み取りカウントの数を取得することです。そのためのラッパーを作成しましたが、私の問題は、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;
}