Определение размера Java ExecutorService - PullRequest
0 голосов
/ 07 мая 2020

Я реализую клиент Redis с поддержкой кэширования недавно прочитанных значений. В качестве кеша я использую Guava LoadingCache , поскольку он очень хорошо подходит для моего варианта использования.

Одна из функций LoadingCache , которую я действительно хотел бы использовать, - это 'refreshAfterWrite '. По умолчанию refre sh выполняется синхронно; однако я могу переопределить CacheLoader.reload(), чтобы реализовать его асинхронно.

Мой клиент может создать ExecutorService и отправлять ему задачи. Я подумываю использовать ThreadPoolExecutor с минимальным и максимальным количеством потоков.

Мой вопрос - как мне выбрать минимальный и максимальный размер? Если размер слишком консервативный, задачи могут дольше оставаться в очереди. С другой стороны, слишком много потоков может вызвать перегрузку памяти и другие проблемы.

Дополнительные сведения: в приложении может быть несколько экземпляров клиента Redis.

...