在类ReentrantReadWriteLock中有以下奇怪的评论:
transient ThreadLocalHoldCounter readHolds;
Sync() {
readHolds = new ThreadLocalHoldCounter();
setState(getState()); // ensures visibility of readHolds
}
“确保可见性”是什么意思?我问的原因是我有一种情况,看起来好像线程本地 readHolds 正在被重置(线程本地被实现为 WeakReferences,因此只要包含的 Sync 对象仍然存在,就不应该发生这种情况)。setState/getState 只是简单地改变另一个实例变量并且不触及 readHolds。