Не по моему мнению. Если обе модели хорошо реализованы (это БОЛЬШОЕ требование), я думаю, что концепция NIO должна преобладать.
В основе компьютера лежат ядра. Независимо от того, что вы делаете, вы не можете распараллелить ваше приложение больше, чем у вас есть ядра. Т.е., если у вас 4-х ядерный компьютер, вы можете делать ТОЛЬКО 4 вещи за один раз (некоторые детали приведены здесь, но для этого достаточно аргумента).
Продолжая эту мысль, если у вас когда-либо больше потоков, чем ядер, у вас есть отходы. Эти отходы принимают две формы. Во-первых, накладные расходы самих дополнительных потоков. Второе - время, потраченное на переключение между потоками. Оба, вероятно, незначительны, но они есть.
В идеале у вас есть один поток на ядро, и каждый из этих потоков работает на 100% скорости обработки на своем ядре. Переключение задач не происходит в идеале. Конечно, есть ОС, но если вы берете 16-ядерную машину и оставляете 2-3 потока для ОС, то оставшиеся 13-14 идут на ваше приложение. Эти потоки могут переключать то, что они делают в вашем приложении, например, когда они заблокированы требованиями ввода-вывода, но не должны платить эту стоимость на уровне операционной системы. Запишите это прямо в ваше приложение.
Отличным примером такого масштабирования является SEDA http://www.eecs.harvard.edu/~mdw/proj/seda/. Он показал гораздо лучшее масштабирование под нагрузкой, чем стандартная модель потока на запрос.
Мой личный опыт с Нетти. У меня было простое приложение. Я хорошо реализовал это как в Tomcat, так и в Netty. Затем я загружаю и проверяю его с сотнями параллельных запросов (более 800, я полагаю). В конце концов Tomcat замедлился до ползания и показал чрезвычайно бурное / медленное поведение. В то время как реализация Netty просто увеличила время отклика, но продолжила с невероятно общей пропускной способностью.
Обратите внимание, это зависит от надежной реализации. NIO все еще поправляется со временем. Мы учимся настраивать операционные системы наших серверов, чтобы лучше работать с ним, а также как внедрять JVM для более эффективного использования функциональных возможностей ОС. Я не думаю, что победитель еще может быть объявлен, но я верю, что NIO будет возможным победителем, и у него уже все хорошо.