Web 容器创建的线程和普通线程之间的区别?

Difference between Threads created by web container and Normal Threads?

我可以知道 Web 容器创建的线程(为每个请求创建新线程)与通过扩展线程 Class 或实现可运行接口创建的普通线程有何不同。此外,Web 容器如何创建线程,即使 Servlet 接口或扩展它的 servlet 不包含任何 运行() 方法。

java中的所有线程都是通过扩展线程Class或实现可运行接口创建的。所以 Web 容器线程也是以同样的方式创建的。

您在 servlet 中看不到 运行 方法,那是因为 servlet 代码是在容器的 "main" 线程创建的线程的 运行 方法中调用的。容器抽象了所有这些细节,这样我们就可以专注于按请求编写实际的逻辑服务器,而不用担心多个请求管理。

每个容器都有 "main" 个线程,这是我们独立应用程序的方式,或者类似于 spring 中的 SpringMain。

如果你想区分容器线程和你的线程,你可以看看他们的名字,你应该找到一个模式。您可以控制由您的业务逻辑创建的线程的命名法。

除了 Web 容器线程通常取自线程池外,线程之间没有区别,因为每次创建一个新的线程对象既昂贵又耗时。

(线程池是预先实例化的空闲线程的集合,随时准备接受工作,通常组织在队列中)。