【发布时间】:2017-10-15 17:04:12
【问题描述】:
我计划从多个线程同时加载缓存。最简单的形式是:
IgniteCache<Integer, Integer> cache = ignite.getOrCreateCache("ints");
ExecutorService es = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
for (int i = 0; i < 20000000; i++) {
int t = i;
es.submit(() -> {
cache.put(t, t);
});
}
这样做安全吗?我阅读了该方法的文档:
将指定的值与缓存中的指定键相关联。如果 缓存以前包含键的映射,旧值是 替换为指定的值。 (据说缓存 c 包含一个 当且仅当 c.containsKey(k) 将返回时,映射键 k 真的。)
没有任何关于线程安全的说法。那么同时输入IgniteCache是否安全?
【问题讨论】:
标签: java multithreading caching ignite