Google ổi hướng dẫn cho biết bộ nhớ cache hết hạn có thể được thử nghiệm với TickerỔi Mã cổ phiếu cache hết hạn
như hiểu biết của tôi, tôi có thể sử dụng nó để buộc một hết nhanh chóng. Tôi có phải không?
nhưng tôi đã thử trong mã sau đây và nó không hoạt động, bất kỳ đề xuất nào?
@Test
public void expireAfterWriteTestWithTicker() throws InterruptedException {
Ticker t = new Ticker() {
@Override
public long read() {
return TimeUnit.MILLISECONDS.toNanos(5);
}
};
//Use ticker to force expire in 5 millseconds
LoadingCache<String, String> cache = CacheBuilder.newBuilder()
.expireAfterWrite(20, TimeUnit.MINUTES).ticker(t).build(loader);
cache.getUnchecked("hello");
assertEquals(1, cache.size());
assertNotNull(cache.getIfPresent("hello"));
//sleep
Thread.sleep(10);
assertNull(cache.getIfPresent("hello")); //failed
}
Thay vì ' Thread.sleep', tăng ticker hơn 20 phút. Ví dụ: xem [kiểm tra đơn vị] này (https://github.com/ben-manes/caffeine/blob/master/caffeine/src/test/java/com/github/benmanes/caffeine/cache/ExpireAfterWriteTest.java) –
Cảm ơn. Giờ nó đã hoạt động. – user3644708