我在以下配置中使用咖啡因:
Cache<String, String> cache = Caffeine.newBuilder()
.executor(newWorkStealingPool(15))
.scheduler(createScheduler())
.expireAfterWrite(10, TimeUnit.SECONDS)
.maximumSize(MAXIMUM_CACHE_SIZE)
.removalListener(this::onRemoval)
.build();
private Scheduler createScheduler() {
return forScheduledExecutorService(newSingleThreadScheduledExecutor());
}
我是否会正确假设该onRemoval
方法将在newWorkStealingPool(15)
ForkJoinPool 上执行,并且调度程序只会被调用以查找需要被驱逐的过期条目?
这意味着它会像这样:
- 调用单线程调度程序(每 ~ 1 秒)
- 找到所有要驱逐的过期条目
newWorkStealingPool(15)
为缓存构建器中定义的每个逐出条目执行onRemoval ?
我没有找到解释这种行为的文档,所以我在这里问
肿瘤坏死因子