Могу ли я узнать, чем потоки, созданные веб-контейнером (новый поток создается для каждого запроса), отличаются от обычных потоков, которые создаются путем расширения класса потока или реализации интерфейса Runnable. Кроме того, как веб-контейнер создает потоки, даже если интерфейс сервлета или сервлеты, расширяющие его, не содержат никакого метода run().
Разница между потоками, созданными веб-контейнером, и обычными потоками?
Ответы (2)
Все потоки в java создаются путем расширения класса потоков или реализации интерфейса Runnable. Таким образом, потоки веб-контейнеров также создаются таким же образом.
Вы не видите метод запуска внутри сервлета, потому что код сервлета вызывается внутри метода запуска потока, который создается «основным» потоком контейнера. Контейнер абстрагирует все эти детали, поэтому мы можем сосредоточиться на написании фактического логического сервера по запросу, вместо того, чтобы беспокоиться об управлении несколькими запросами.
У каждого контейнера есть «основной» поток, как у нас для нашего автономного приложения или аналогично SpringMain в spring.
ЕСЛИ вы хотите различать потоки контейнера и ваши потоки, вы можете посмотреть на их имена, и вы должны найти шаблон. Вы можете контролировать номенклатуру потоков, созданных вашей бизнес-логикой.
Между потоками нет никакой разницы, за исключением того, что в случае веб-контейнера потоки обычно берутся из пула потоков, поскольку создание нового объекта потока каждый раз является дорогостоящим и трудоемким.
(Пул потоков — это набор предварительно созданных бездействующих потоков, готовых к работе, обычно организованных в очередь).