假设我有以下(伪)代码:
class Cache {
Entry addIfMissing(String data) {
// omitted for brevity
}
void evictOldEntries() {
// omitted for brevity
}
}
class Program {
private Cache cache = new Cache();
doWork() { // called from multiple threads
var entry = cache.addIfMissing("omitted for brevity");
// work with entry
}
static {
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
cache.evictOldEntries();
}, 10, 10, TimeUnit.MINUTES);
}
}
我想确保在该evictOldEntries方法运行时程序中的所有其他线程都必须等待它完成。
在这种情况下哪种同步机制合适?
白板的微信
侃侃无极
阿晨1998
蓝山帝景
随时随地看视频慕课网APP
相关分类