Ни.
В идеале для сервера на базе NIO вы должны создать пул потоков, используя что-то вроде Executors.newFixedThreadPool()
, которое вы будете использовать для выполнения всей обработки ваших запросов.
Но не следует назначать запросы конкретным потокам, потому что остальная часть вашей системы также должна быть асинхронной. Это означает, что когда обработчику запроса необходимо выполнить некоторую длительную работу ввода-вывода или аналогичную, вместо того, чтобы блокировать поток и ожидать его завершения, он запускает его асинхронно и организует обработку для продолжения после завершения работы, отправляя новую задача в пул потоков. Пока неизвестно, какой поток выполнит работу в этот момент, поэтому обработка запроса может быть распределена по многим потокам.
Обычно вы должны координировать асинхронную обработку, используя CompletableFuture
так же, как Promise
используется в узле. Посмотрите на мой ответ здесь, который пытается объяснить, как это сделать: отделенный дизайн для асинхронного http-запроса