我可以知道Web容器创建的线程(为每个请求创建新线程)与通过扩展线程类或实现可运行接口创建的普通线程有何不同。Web 容器如何创建线程,即使 Servlet 接口或扩展它的 servlet 不包含任何 run() 方法。
问问题
2534 次
2 回答
1
java中的所有线程都是通过扩展线程类或实现Runnable接口创建的。所以 Web 容器线程也以相同的方式创建。
您看不到 servlet 内部的 run 方法,这是因为 servlet 代码在由容器的“主”线程创建的线程的 run 方法内部调用。容器将所有这些细节都抽象出来,这样我们就可以专注于按请求编写实际的逻辑服务器,而不用担心多个请求的管理。
每个容器都有“主”线程,就像我们的独立应用程序一样,或者类似于 spring 中的 SpringMain。
如果你想区分容器线程和你的线程,你可以看看它们的名字,你应该找到一个模式。您可以控制由业务逻辑创建的线程的命名。
于 2015-06-05T06:54:26.403 回答
0
线程之间没有区别,只是在 web 容器线程通常从线程池中获取的情况下,因为每次创建一个新的线程对象都是昂贵且耗时的。
(线程池是预先实例化的空闲线程的集合,它们准备好接受工作,通常组织在一个队列中)。
于 2015-06-08T08:56:44.567 回答