Комментарии 9
Пул потоков, читающих из очереди сообщений, как правило, сильно имеет маленьких размер
Полагаю, тут имелось ввиду что-то вроде: "Пул потоков, читающих из очереди сообщений, как правило имеет крайне маленький размер"
Можно еще посмотреть в сторону project reactor, конечно разработка весьма специфическая, но проблемы производительности при highload решает на ура, особенно когда активно используется связка kafka+redis+postgres
С релиза Java 21 и легковесных потоков, пулы потоков превратились в ненужный устаревший инструмент.
Не нужно больше создавать и настраивать пулы потоков, нужно как написано в самом начале просто запускать поток
new Thread(() -> {})
Просто забудьте про пулы потоков и связанные с ними настройки, это уже устарело
На Java 21 переедут еще не скоро
и виртуальные потоки не работают если где-то в коде есть блок synchronized или вызов нативного C кода, да такого может не быть в коде вашего приложения, но такой код может вполне вызываться внутри библиотек с которыми приходится работать
поэтому project loom, использовать в продакшене надо с крайней осторожностью
фабрика для создания потоков (на практике никогда не пригождается)
Пока не понадобилось например thread's context class loader назначать или делать АОПом сквозную трассировку в высококонкурентной среде.
Не очень понял, зачем так усложнять в примере с "Выполнение частых Scheduled задач". Почему просто не взять newSingleThreadScheduledExecutor?
Настраиваем ExecutorService'ы на практике