Как использовать общий кеш в okhttp

Можно ли использовать кеш okhttp совместно, т.е. иметь несколько клиентов, обращающихся к одному и тому же каталогу кеша, чтобы каждый из них не оставался своим.

В репродукции вики okhttp находим:

It is an error to have multiple caches accessing the same cache directory simultaneously

Я не ищу разные кеши для использования одной и той же папки, а скорее один общий кеш, который может обновляться более чем одним клиентом.

Простой пример (на Java):

    Cache cache = new Cache(cacheDirectory, cacheSize);

    client  = new OkHttpClient.Builder().cache(cache).build();
    client2 = new OkHttpClient.Builder().cache(cache).build();

Было бы это небезопасно? Если да, то есть ли альтернатива для этого или это вообще невозможно?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
216
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ага, это совершенно безопасно. Было бы небезопасно иметь несколько экземпляров Cache, которые совместно используют каталог, будь то в одном процессе или в нескольких.

Привет, Джесси, если я правильно вас понял, создание нескольких клиентов OkHttp должно быть безопасным, если они используют один и тот же объект Cache. Это правильно? Будет ли общий объект Cache следить за тем, чтобы клиенты не пытались одновременно производить запись в один и тот же кеш?

Thomas Vos 20.08.2018 00:51

Если это правильно, будет ли безопасно хранить объект Cache как синглтон и использовать его для нескольких клиентов OkHttp одновременно?

Thomas Vos 20.08.2018 01:00

Да, вы определенно хотите синглтон

Jesse Wilson 20.08.2018 13:29

Другие вопросы по теме