HawtDispatch разработан как единый системный пул потоков фиксированного размера.Он предоставляет 2 варианта реализации Java Executors:
- Глобальная очередь отправки: отправленные объекты Runnable выполняются одновременно (Вы получаете тот же эффект, используя
Executors.newFixedThreadPool(n)
executor) - Serial Dispatch Queue: Переданные объекты Runnable выполняются последовательно (тот же эффект достигается с помощью
Executors.newSingleThreadExecutor()
executor)
В отличие от модели исполнителя java все глобальные и последовательные очереди отправки имеют общий пул потоков фиксированного размера.Вы можете использовать тысячи последовательных очередей отправки, не увеличивая количество потоков.Последовательные очереди отправки могут использоваться как почтовые ящики Erlang для управления приложениями в стиле реактивных акторов.
Поскольку HawtDispatch использует пул потоков фиксированного размера для обработки всех глобальных и последовательных выполнений очереди, все выполняемые задачи должны быть неблокирующими.,В некотором смысле это похоже на архитектуру NodeJS, за исключением того, что она использует несколько потоков вместо одного.
По сравнению с Netty, HawtDispatch не является платформой для фактической обработки данных сокетов.Он не предоставляет основы для того, как кодировать / декодировать, буферизовать и обрабатывать данные сокета.Все, что он делает, это запускает настроенный пользователем Runnable, когда данные могут быть прочитаны или записаны на неблокирующем сокете.Тогда ваше приложение должно действительно читать / записывать данные сокета.