番石榴股票代号缓存到期

用户名

谷歌番石榴教程说缓存过期可以用Ticker测试

据我了解,我可以用它来强制快速到期。我说的对吗?

但是我尝试了以下代码,但是没有任何建议?

@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 

}
用户名

自己找到答案

可以使用股票行情来跳过时间,但不能跳过到期时间

class FakeTicker extends Ticker {

    private final AtomicLong nanos = new AtomicLong();

    /** Advances the ticker value by {@code time} in {@code timeUnit}. */
    public FakeTicker advance(long time, TimeUnit timeUnit) {
        nanos.addAndGet(timeUnit.toNanos(time));
        return this;
    }

    @Override
    public long read() {
        long value = nanos.getAndAdd(0);
        System.out.println("is called " + value);
        return value;
    }
}

@Test
public void expireAfterWriteTestWithTicker() throws InterruptedException {
    FakeTicker t = new FakeTicker();

    // Use ticker to force expire in 20 minute
    LoadingCache<String, String> cache = CacheBuilder.newBuilder()
            .expireAfterWrite(20, TimeUnit.MINUTES).ticker(t).build(ldr);
    cache.getUnchecked("hello");
    assertEquals(1, cache.size());
    assertNotNull(cache.getIfPresent("hello"));

    // add 21 minutes
    t.advance(21, TimeUnit.MINUTES);
    assertNull(cache.getIfPresent("hello")); 

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不缓存的番石榴缓存

来自分类Dev

最大容量1的番石榴缓存

来自分类Dev

谷歌番石榴检查缓存中的项目

来自分类Dev

自定义POJO的番石榴缓存

来自分类Dev

春天-使用谷歌番石榴缓存

来自分类Dev

番石榴缓存魔术小姐

来自分类Dev

是否可以按插入/访问的顺序遍历番石榴缓存?

来自分类Dev

如何模拟谷歌番石榴缓存生成器?

来自分类Dev

为什么我的番石榴缓存不断覆盖项目?

来自分类Dev

不带清除程序的片段缓存到期

来自分类Dev

与番石榴合并范围

来自分类Dev

使用番石榴AbstractScheduledService

来自分类Dev

番石榴EventBus调度

来自分类Dev

扩展番石榴集合

来自分类Dev

使番石榴ArrayListMultimap工作

来自分类Dev

番石榴通用订购

来自分类Dev

番石榴上的ClassNotFoundException

来自分类Dev

如何使用番石榴在GWT中缓存服务器结果?

来自分类Dev

番石榴缓存'expireAfterWrite'似乎并不总是有效

来自分类Dev

如何确定番石榴缓存中是否存在键,以便我不会覆盖它?

来自分类Dev

如何使用番石榴CacheBuilder?

来自分类Dev

番石榴表到CSV

来自分类Dev

从番石榴集合继承HashBasedTable

来自分类Dev

可选vs番石榴可选

来自分类Dev

不了解番石榴PrimitiveSink

来自分类Dev

番石榴CacheLoader未命中

来自分类Dev

试图在番石榴中实现?

来自分类Dev

关于番石榴ListenableFuture的查询

来自分类Dev

使用Immutablemap番石榴的优势