クラスReentrantReadWriteLockには、次の興味深いコメントがあります。
transient ThreadLocalHoldCounter readHolds;
Sync() {
readHolds = new ThreadLocalHoldCounter();
setState(getState()); // ensures visibility of readHolds
}
「可視性を確保する」とはどういう意味ですか? 私が尋ねる理由は、スレッド ローカルの readHolds がリセットされているように見える状況があるためです (スレッド ローカルは WeakReferences として実装されているため、含まれている Sync オブジェクトがまだ生きている限り、それは発生しないはずです)。setState/getState は単に別のインスタンス変数を変更し、readHolds には触れないでください。