gpt4 book ai didi

java - 如何在不同的线程中运行监听器或在不同的线程中进行计算

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:05 24 4
gpt4 key购买 nike

我正在尝试使用 Google Guava 构建缓存,并想对过期对象进行一些计算。如果删除了某个对象,removalListener 会通知我。

我如何在与主应用程序不同的线程中运行 removalListener,或者将过期对象(在下面的简单示例中为 Integer 3)传递给处理计算的不同线程?

编辑:由于计算时间很短,但经常发生,我宁愿不是每次都创建一个新线程(将是数千个线程),而是让一个(或两个)计算所有对象。

简单的例子:

Cache<String, Integer> cache = CacheBuilder.newBuilder().maximumSize(100)
.expireAfterAccess(100, TimeUnit.NANOSECONDS)
.removalListener(new RemovalListener<String, Integer>() {
public void onRemoval(final RemovalNotification notification) {
if (notification.getCause() == RemovalCause.EXPIRED) {
System.out.println("removed " + notification.getValue());
// do calculation=> this should be in another thread
}
}
})
.build();
cache.put("test1", 3);
cache.cleanUp();

最佳答案

要在执行程序中运行您的监听器,请用 RemovalListeners.asynchronous 包装它.

.removalListener(异步(new RemovalListener() { ... }, 执行器))

关于java - 如何在不同的线程中运行监听器或在不同的线程中进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com