ConcurrentHashMap のソースコードより
/**
171 * Number of unsynchronized retries in size and containsValue
172 * methods before resorting to locking. This is used to avoid
173 * unbounded retries if tables undergo continuous modification
174 * which would make it impossible to obtain an accurate result.
175 */
176 static final int RETRIES_BEFORE_LOCK = 2;
1.反復はロックを保持しないと読みましたが、上記のステートメントはどういう意味ですか? get のような操作でもロックを保持できますか?シナリオも提供してください。
2. スレッド 1 で実行されている更新操作は、その要素の反復がまだ行われていない場合、スレッド 2 の反復で可視になりますか? (揮発性と可視性?)
3.ロックが行われる更新以外の状況はありますか?
4. データを取得するときは、揮発性読み取りが使用されます。揮発性読み取りが失敗した場合、セグメントのロックは、成功した読み取りの最後の試みのために取得されます。これはどういう意味ですか?揮発性読み取りとは何ですか?