javadoc toexpireAfterAccess
メソッドには次のように書かれています。
エントリの作成後、その値の最新の置換後、または最後のアクセス後、一定の期間が経過すると、各エントリがキャッシュから自動的に削除されるように指定します。アクセス時間は、すべてのキャッシュの読み取りおよび書き込み操作 (Cache.asMap().get(Object) および Cache.asMap().put(K, V) を含む) によってリセットされますが、Cache のコレクション ビューに対する操作によってはリセットされません。 asMap
次のコードがあります。
Cache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterAccess(2, TimeUnit.SECONDS)
.build();
ConcurrentMap<String, String> map = cache.asMap();
map.put("a", "12345");
System.out.println("First access: " + map.get("a"));
System.out.println("Second access: " + map.get("a"));
Thread.sleep(1900); //1.9 seconds
System.out.println("Third access: " + map.get("a"));
Thread.sleep(1000); //1 second
System.out.println("Fourth access: " + map.get("a"));
Thread.sleep(1500); //1.5 second
System.out.println("Fivth access: " + map.get("a"));
そしてその出力は次のとおりです。
First access: 12345
Second access: 12345
Third access: 12345
Fourth access: 12345
Fivth access: 12345
そのため、collection-view で get 操作を実行すると、アクセス時間もリセットされることがわかります。そのような場合、javadocの太字のフレーズは何を意味しますか?