2017-05-16 7 views
3

私は複数のスレッドから同時にキャッシュをロードする計画があります。これの最も簡単な形式は、次のようになります。igniteキャッシュスレッドは安全ですか?

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)は trueを返す場合だけ、キーkの のマッピングが含まれていると言われている。)

スレッドの安全性についてのいずれかの単語があります。それで、IgniteCacheを同時に入れても安全ですか?

答えて

5

答えはYESです。すべてのIgnite APIはスレッドセーフであり、複数のスレッドから同時に使用できます。

しかし、個々のputを実行することはデータロードを行うのに有効な方法ではありませんが、これにはより良い手法があります。詳細はこのページを参照してください:https://apacheignite.readme.io/docs/data-loading

1

はい、すべてのIgniteCacheメソッドは、他のほとんどのAPIと同様にスレッドセーフです。

関連する問題