Java web容器创建的线程和普通线程之间的差异?

Java web容器创建的线程和普通线程之间的差异?,java,multithreading,servlets,web-container,Java,Multithreading,Servlets,Web Container,我想知道由web容器创建的线程(为每个请求创建新线程)与通过扩展thread类或实现Runnable接口创建的普通线程有何不同。Web容器如何创建线程,即使Servlet接口或扩展它的Servlet不包含任何run()方法 java中的所有线程都是通过扩展Thread类或实现Runnable接口创建的。所以web容器线程也是以同样的方式创建的 在servlet中看不到run方法,这是因为servlet代码在容器的“main”线程创建的线程的run方法中调用。容器抽象了所有这些细节,这样我们就可以

我想知道由web容器创建的线程(为每个请求创建新线程)与通过扩展thread类或实现Runnable接口创建的普通线程有何不同。Web容器如何创建线程,即使Servlet接口或扩展它的Servlet不包含任何run()方法

java中的所有线程都是通过扩展Thread类或实现Runnable接口创建的。所以web容器线程也是以同样的方式创建的

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

每个容器都有“主”线程,就像我们的独立应用程序一样,或者类似于spring中的SpringMain


如果要区分容器线程和线程,可以查看它们的名称,应该找到一个模式。您可以控制由业务逻辑创建的线程的名称。

线程之间没有区别,只是在web容器的情况下,线程通常是从线程池中获取的,因为每次创建一个新的线程对象既昂贵又耗时


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

取决于所使用的web容器。@Robby:我使用Apache Tomcat作为web容器。恐怕您最好的选择是搜索Tomcat设计文档,或者阅读Tomcat源代码。除了run方法内部的逻辑之外没有区别,它是池化的。servlet容器不会为每个请求创建新线程。它使用一个线程池。线程从池中取出以处理请求,然后放回池中。线程是线程是线程。Tomcat线程与其他线程没有什么不同。