com.github.benmanes.caffeine.cache.Caffeine.ticker()方法的使用及代码示例

x33g5p2x  于2022-01-18 转载在 其他  
字(10.6k)|赞(0)|评价(0)|浏览(425)

本文整理了Java中com.github.benmanes.caffeine.cache.Caffeine.ticker()方法的一些代码示例,展示了Caffeine.ticker()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Caffeine.ticker()方法的具体详情如下:
包路径:com.github.benmanes.caffeine.cache.Caffeine
类名称:Caffeine
方法名:ticker

Caffeine.ticker介绍

[英]Specifies a nanosecond-precision time source for use in determining when entries should be expired or refreshed. By default, System#nanoTime is used.

The primary intent of this method is to facilitate testing of caches which have been configured with #expireAfterWrite, #expireAfterAccess, or #refreshAfterWrite.
[中]指定纳秒精度的时间源,用于确定条目何时过期或刷新。默认情况下,使用系统#纳米时间。
此方法的主要目的是方便测试已配置为#expireAfterWrite、#expireAfterAccess或#refreshAfterWrite的缓存。

代码示例

代码示例来源:origin: ben-manes/caffeine

@Test(expectedExceptions = NullPointerException.class)
public void ticker_null() {
 Caffeine.newBuilder().ticker(null);
}

代码示例来源:origin: ben-manes/caffeine

@Test(expectedExceptions = IllegalStateException.class)
public void ticker_twice() {
 Caffeine.newBuilder().ticker(Ticker.systemTicker()).ticker(Ticker.systemTicker());
}

代码示例来源:origin: ben-manes/caffeine

public void testTicker_setTwice() {
 Ticker testTicker = Ticker.systemTicker();
 Caffeine<Object, Object> builder =
   Caffeine.newBuilder().ticker(testTicker);
 try {
  // even to the same instance is not allowed
  builder.ticker(testTicker);
  fail();
 } catch (IllegalStateException expected) {}
}

代码示例来源:origin: ben-manes/caffeine

@Test
public void ticker() {
 Ticker ticker = new FakeTicker()::read;
 Caffeine<?, ?> builder = Caffeine.newBuilder().ticker(ticker);
 assertThat(builder.ticker, is(ticker));
 builder.build();
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMapValues_iteratorRemove() {
  Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
    .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
    .executor(MoreExecutors.directExecutor())
    .ticker(fakeTicker::read));

  cache.put(10, 20);
  Iterator<Integer> iterator = cache.asMap().values().iterator();
  iterator.next();
  iterator.remove();

  assertEquals(0, cache.size());
 }
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMapKeySet_contains() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(10, 20);
 fakeTicker.advance(500, TimeUnit.MILLISECONDS);
 cache.put(20, 22);
 cache.put(5, 10);
 fakeTicker.advance(501, TimeUnit.MILLISECONDS);
 assertTrue(cache.asMap().keySet().contains(20));
 assertTrue(cache.asMap().keySet().contains(5));
 assertFalse(cache.asMap().keySet().contains(10));
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMapValues_contains() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(10, 20);
 fakeTicker.advance(500, TimeUnit.MILLISECONDS);
 cache.put(20, 22);
 cache.put(5, 10);
 fakeTicker.advance(501, TimeUnit.MILLISECONDS);
 assertTrue(cache.asMap().values().contains(22));
 assertTrue(cache.asMap().values().contains(10));
 assertFalse(cache.asMap().values().contains(20));
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMapKeySet() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(10, 20);
 fakeTicker.advance(500, TimeUnit.MILLISECONDS);
 cache.put(20, 22);
 cache.put(5, 10);
 fakeTicker.advance(501, TimeUnit.MILLISECONDS);
 Set<Integer> foundKeys = Sets.newHashSet();
 for (Integer current : cache.asMap().keySet()) {
  foundKeys.add(current);
 }
 assertEquals(ImmutableSet.of(20, 5), foundKeys);
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMap_containsKey() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(20000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(654, 2675);
 fakeTicker.advance(10000, TimeUnit.MILLISECONDS);
 cache.put(2456, 56);
 cache.put(2, 15);
 fakeTicker.advance(10001, TimeUnit.MILLISECONDS);
 assertTrue(cache.asMap().containsKey(2));
 assertTrue(cache.asMap().containsKey(2456));
 assertFalse(cache.asMap().containsKey(654));
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMapEntrySet() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(10, 20);
 fakeTicker.advance(500, TimeUnit.MILLISECONDS);
 cache.put(20, 22);
 cache.put(5, 10);
 fakeTicker.advance(501, TimeUnit.MILLISECONDS);
 int sum = 0;
 for (Entry<Integer, Integer> current : cache.asMap().entrySet()) {
  sum += current.getKey() + current.getValue();
 }
 assertEquals(57, sum);
}

代码示例来源:origin: ben-manes/caffeine

public void testExpireAfterAccess() {
 final Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterAccess(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(0, 10);
 cache.put(2, 30);
 fakeTicker.advance(999, TimeUnit.MILLISECONDS);
 assertEquals(Integer.valueOf(30), cache.getIfPresent(2));
 fakeTicker.advance(1, TimeUnit.MILLISECONDS);
 assertEquals(Integer.valueOf(30), cache.getIfPresent(2));
 fakeTicker.advance(1000, TimeUnit.MILLISECONDS);
 assertEquals(null, cache.getIfPresent(0));
}

代码示例来源:origin: ben-manes/caffeine

public void testExpireAfterWrite() {
 final Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(1000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(10, 100);
 cache.put(20, 200);
 cache.put(4, 2);
 fakeTicker.advance(999, TimeUnit.MILLISECONDS);
 assertEquals(Integer.valueOf(100), cache.getIfPresent(10));
 assertEquals(Integer.valueOf(200), cache.getIfPresent(20));
 assertEquals(Integer.valueOf(2), cache.getIfPresent(4));
 fakeTicker.advance(2, TimeUnit.MILLISECONDS);
 assertEquals(null, cache.getIfPresent(10));
 assertEquals(null, cache.getIfPresent(20));
 assertEquals(null, cache.getIfPresent(4));
 cache.put(10, 20);
 assertEquals(Integer.valueOf(20), cache.getIfPresent(10));
 fakeTicker.advance(1000, TimeUnit.MILLISECONDS);
 assertEquals(null, cache.getIfPresent(10));
}

代码示例来源:origin: ben-manes/caffeine

public void testAsMap_containsValue() {
 Cache<Integer, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(20000, TimeUnit.MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .ticker(fakeTicker::read));
 cache.put(654, 2675);
 fakeTicker.advance(10000, TimeUnit.MILLISECONDS);
 cache.put(2456, 56);
 cache.put(2, 15);
 fakeTicker.advance(10001, TimeUnit.MILLISECONDS);
 assertTrue(cache.asMap().containsValue(15));
 assertTrue(cache.asMap().containsValue(56));
 assertFalse(cache.asMap().containsValue(2675));
}

代码示例来源:origin: ben-manes/caffeine

public void testExpiration_expireAfterWrite() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 checkExpiration(cache, loader, ticker, removalListener);
}

代码示例来源:origin: ben-manes/caffeine

public void testExpiringGet_expireAfterWrite() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 runExpirationTest(cache, loader, ticker, removalListener);
}

代码示例来源:origin: ben-manes/caffeine

public void testExpiration_expireAfterAccess() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterAccess(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 checkExpiration(cache, loader, ticker, removalListener);
}

代码示例来源:origin: ben-manes/caffeine

public void testExpiringGet_expireAfterAccess() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterAccess(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 runExpirationTest(cache, loader, ticker, removalListener);
}

代码示例来源:origin: ben-manes/caffeine

public void testRemovalScheduler_expireAfterWrite() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterWrite(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME);
}

代码示例来源:origin: ben-manes/caffeine

public void testRemovalScheduler_expireAfterAccess() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterAccess(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME);
}

代码示例来源:origin: ben-manes/caffeine

public void testRemovalScheduler_expireAfterBoth() {
 FakeTicker ticker = new FakeTicker();
 CountingRemovalListener<String, Integer> removalListener = countingRemovalListener();
 WatchedCreatorLoader loader = new WatchedCreatorLoader();
 LoadingCache<String, Integer> cache = CaffeinatedGuava.build(Caffeine.newBuilder()
   .expireAfterAccess(EXPIRING_TIME, MILLISECONDS)
   .expireAfterWrite(EXPIRING_TIME, MILLISECONDS)
   .executor(MoreExecutors.directExecutor())
   .removalListener(removalListener)
   .ticker(ticker::read),
   loader);
 runRemovalScheduler(cache, removalListener, loader, ticker, KEY_PREFIX, EXPIRING_TIME);
}

相关文章