В чем принципиальная разница между NIO и BIO в Tomcat? - PullRequest
0 голосов
/ 26 апреля 2019

С установленным в Tomcat разъемом NIO у нас есть N потоков пула и M рабочих потоков.

С установленным разъемом BIO мы можем иметь N * M потоков в пуле потоков.Так в чем же разница между двумя разъемами?

1 Ответ

0 голосов
/ 29 апреля 2019

В BIO каждому новому соединению выделяется поток из пула потоков Соединителя, и этот поток остается назначенным этому соединению, пока соединение не закроется.Это означает, что потоки простаивают в течение длительных периодов времени между запросами (т. Е. Во время поддержки HTTP).

В NIO каждое новое соединение передается в Poller.Поток Poller получает уведомление при наличии данных о соединении, которое необходимо обработать.Затем Poller выделяет поток для соединения из пула потоков Соединителя, и этот поток остается назначенным этому соединению, пока все данные не будут прочитаны / записаны.Затем соединение передается обратно в Poller, чтобы Poller мог отслеживать дополнительные данные.

Короче говоря, это делает NIO более масштабируемым.BIO требует одного потока в пуле потоков для каждого соединения.NIO может поддерживать гораздо больше соединений, чем BIO, и для каждого одновременно обрабатываемого запроса требуется только один поток в пуле потоков.

...