Какая функция Java находится под капотом сервлета 3.1? - PullRequest
0 голосов
/ 29 июня 2019

Уже несколько дней пытаюсь разобраться в особенностях сервлета 3.0, 3.1 и весеннего webflux.

На данный момент я понимаю, для чего сервлет 3.0 и как он работает под капотом. Тогда следующий пункт - сервлет 3.1. Как указано во всех ресурсах, которые я прочитал, сервлет 3.1 решает проблему блокировки ввода-вывода в сервлете 3.0 :

Другими словами, в Servlet 3.0 только часть обработки запросов стал асинхронным, но не I / O для обслуживания запросов и ответов. Если достаточное количество потоков блокируется, это приводит к истощению потока и влияет производительность.
В Servlet 3.1 NIO эта проблема решается с помощью ReadListener и Интерфейсы WriteListener. Они зарегистрированы в ServletInputStream и ServletOutputStream. У слушателей есть методы обратного вызова, которые вызывается, когда контент доступен для чтения или может быть записан без блокировки контейнера сервлета на потоках ввода / вывода. Так что эти Потоки ввода / вывода освобождены и теперь могут обслуживать другие запросы, увеличивая производительность.

Я хочу понять основную функцию Java, которая позволяет понять, что Содержимое доступно для чтения или может быть записано без блокировки контейнера сервлета в потоках ввода / вывода. Я не знаю этот механизм в Java. Когда он был добавлен в Java (какая версия)?

Не могли бы вы объяснить эту функцию и как она работает на высоком уровне абстракции?

приписка

Я нашел следующее видео , связанное с моим вопросом, и я нашел следующий снимок: enter image description here

Мой вопрос в основном сосредоточен на том, как контейнер понимает, что мы можем читать / записывать данные без блокировки.

...