1

Google Guava Cache はデフォルトで同じスレッドにキャッシュをロードしますか?

コード:

cache = CacheBuilder
    .newBuilder()
    .refreshAfterWrite(2, TimeUnit.SECONDS)
    .build(new CacheLoader<String,String>() {
        @Override
        public String load(String s) throws Exception {
            return addCache(s);
        }
});

呼び出しaddCacheは別のスレッドで行われますか? 私の知る限り、それは同期呼び出しですが、よくわかりません。

4

2 に答える 2

1

JB Nizet の回答に追加するには、Guava がデフォルトでキャッシュをマルチスレッド化しない理由をここで確認できます。

その理由は次のとおりです。キャッシュのメンテナンスを継続的に実行したい場合、スレッドを作成する必要があり、その操作は共有ロックのユーザー操作と競合します。さらに、一部の環境ではスレッドの作成が制限されているため、その環境では CacheBuilder が使用できなくなります。

于 2021-07-06T04:42:46.507 に答える