❓ Какие параметры у ThreadPoolExecutor и что произойдёт при переполнении?
Ключевые параметры: corePoolSize, maximumPoolSize, keepAliveTime, рабочая очередь и политика отказа.
Логика приёма задачи: если активных потоков меньше core — создаётся поток; иначе задача кладётся в очередь; если очередь заполнена и потоков меньше max — создаётся новый поток до максимума; если и это невозможно — срабатывает политика отказа (AbortPolicy бросает исключение, CallerRunsPolicy выполняет в вызывающем потоке, DiscardPolicy молча отбрасывает).
Опасность фабрик Executors: newFixedThreadPool использует неограниченную очередь, newCachedThreadPool использует неограниченное число потоков. Оба под нагрузкой ведут к OutOfMemoryError.
🐸 Библиотека собеса по Java
#concurrency
Post #1362
1.18K
- 👍 10
- 👏 2
- 🔥 1