Kra*_*ken 8 java multithreading tomcat threadpool
所以这是我的理解.
Apache Tomcat的线程池(称为连接器Threadpool?)有许多线程(默认为200).现在这意味着在特定时间,200人可以与我的Web应用程序进行通信.
现在,采用特定与我的应用程序连接的方案.我收到一个请求,服务器上的tomcat客户端检查是否有可用的线程来满足请求.如果它是好的,否则我们会给出一些错误代码.现在,如果成功,那个我已分配给该请求的一个线程是否会与该特定客户端关联,直到他的请求未被处理为止?
基本上,作为一个用户,如果我去www.myApp.com
,我从线程池中获取一个线程,从服务器获取所有信息,并给我回到最后的HTML.之后,线程是免费的,然后回到池中.现在,如果我点击其他内容,那么再次转到线程池并获得一个线程(如果可用)并继续进行.这是怎么回事?
问题2
比方说,我的服务器端有一个Java应用程序.所以,当我点击一个网址时,它会带我去一些java代码.现在是,我从Tomcat Threadpool获得的线程,该线程将执行我的代码?
如果是这样的话,如果我在我的java代码中创建新线程会发生什么,这些线程是从Tomcat的线程池获取还是来自Java的线程池创建的?另外,在这种情况下,执行Tomcat的线程会发生什么?
谢谢.
请提供一些Tomcat官方参考/资源,如果您了解任何内容,我可以阅读这些内容.干杯.
Ste*_*n C 10
现在这意味着在特定时间,200人可以与我的Web应用程序进行通信.
不完全是.这意味着您的服务器可以同时处理 200个请求1.队列中可能存在许多其他请求,等待线程变为可用.
现在,如果成功,那个我已分配给该请求的一个线程是否会与该特定客户端关联,直到他的请求未被处理为止?
是的...除非您使用最近版本的Servlet规范中添加的异步请求处理功能.(在这种情况下,有可能用200个线程"同时"处理超过200个请求.但这需要一个请求在等待某事发生时放弃对另一个请求的控制.请阅读此内容以进行介绍.)
这是怎么回事?
或多或少 ...
1 - 为了迂腐,你可能(可能)需要200多个核心来处理在同一时刻发生的200个请求.因此,我从最终用户的角度"同时"使用,他们无法看到服务器"黑匣子"内部实际发生的情况.但话说回来,一个物理线程/核心并非不可能在同一时刻为多个请求执行工作.最明显的情况是有很多相同的请求一起处理.
比方说,我的服务器端有一个Java应用程序.所以,当我点击一个网址时,它会带我去一些java代码.现在是,我从Tomcat Threadpool获得的线程,该线程将执行我的代码?
这没有意义.如果您在服务器端有一个Java应用程序,那么您需要解释如何从HTTP请求("点击[sic] url")到运行Java应用程序.只有这样我们才能告诉你是否涉及线程池线程.
如果是这样的话,如果我在我的java代码中创建新线程会发生什么,这些线程是从Tomcat的线程池获取还是来自Java的线程池创建的?另外,在这种情况下,执行Tomcat的线程会发生什么?
再一次,它取决于您的Java应用程序的运行方式.例如,如果您的webapp Runtime.exec("java ... classname")
用于在服务器端运行应用程序,那么它与Tomcat位于一个单独的JVM中,并且所有应用程序线程都不在Tomcat线程池中.
还有人指出,本身没有"Java线程池" .如果您的Java应用程序选择,它可以创建和使用线程池.但如果没有,则Java线程不会被合并.它们在终止时基本上被丢弃,并且当Thread
对象被垃圾收集时回收任何剩余的数据结构.
归档时间: |
|
查看次数: |
8515 次 |
最近记录: |