Разница между потоками, созданными веб-контейнером и обычными потоками?
Могу ли я узнать, чем Потоки, созданные веб-контейнером (новый поток создается для каждого запроса), отличаются от обычных Потоков, которые создаются Расширяющим Классом Потока или реализующим Runnable Interface. Кроме того, как веб-контейнер создает потоки, даже если интерфейс сервлета или расширяющие его сервлеты не содержат метода run().
2 ответа
Все потоки в Java создаются путем расширения класса потоков или реализации интерфейса Runnable. Таким образом, потоки веб-контейнера также создаются таким же образом.
Вы не видите метод run внутри сервлета, потому что код сервлета вызывается внутри метода run потока, который создается "основным" потоком контейнера. Контейнер абстрагирует все эти детали, так что мы можем сосредоточиться на написании реального логического сервера по запросу, не беспокоясь об управлении несколькими запросами.
Каждый контейнер имеет "основную" нить, как у нашего автономного приложения или аналогичную SpringMain весной.
Если вы хотите различать потоки контейнера и ваши потоки, вы можете посмотреть на их имена и найти шаблон. Вы можете контролировать номенклатуру потоков, созданных вашей бизнес-логикой.
Между потоками нет никакой разницы, за исключением того, что в случае веб-контейнера потоки обычно берутся из пула потоков, поскольку создание нового объекта потока каждый раз дорого и занимает много времени.
(Пул потоков - это набор предварительно созданных, незанятых потоков, готовых к выполнению работы, обычно организованных в очередь).