на проде)? Или формулы из Java concurrency in practice достаточно?
Напомни, пожалуйста, какая там формула?
https://imgur.com/a/g5yJNVK Number of threads = Number of Available Cores * (1 + Wait time / Service time) Мне тут предложили сделать corePool = INT_MAX на приложении, где очень большой I/O time, я чувствую, что это нехорошо, но хочется какой-нибудь железобетонный пруф из нескольких источников
corePool = INT_MAX звучит как "сожрать всю RAM ещё на старте"
INT_MAX точно не надо. Это сколько туда задач вкинешь, они все параллельно будут работать. Я бы заморочился с формулой. Если можно определить эти wait-time / service-time, то прям по науке бы что-то было 😊 Ещё интересно что там с системой, которую мы будем нагружать. Сколько она выдержит одновременных запросов. И насколько быстро будет их обрабатывать.
Обрабатывает долго, выдержит много. Надо как-нибудь померить будет ради интереса
КешэдПул может быть удобнее в этом случае.
Действительно, выглядит как-будто то, что доктор прописал. Спасибо, гляну. For very large or unbounded pools, you can also bypass queueing entirely and instead hand off tasks directly from producers to worker threads using a SynchronousQueue
Обсуждают сегодня