Tomcat不是多线程会话请求

时间:2015-12-11 00:11:26

标签: multithreading jsp tomcat

相关问题:https://stackoverflow.com/questions/29616394/tomcat-multithreaded-application-issue

这是jsp文件:

<%
int id = new java.util.Random().nextInt(10000);
System.out.println("STARTING REQUEST: "+id);
Thread.sleep(10000);
System.out.println("ENDING REQUEST: "+id);
%>

相当简单但输出

STARTING REQUEST: 6009
ENDING REQUEST: 6009
STARTING REQUEST: 2792
ENDING REQUEST: 2792
STARTING REQUEST: 4504
ENDING REQUEST: 4504

我怎么可能希望用这种多任务处理十几个浏览器会话?

我在tomcat中缺少什么设置?这是一个简单的安装,几乎没有任何变化......

这是我遇到的server.xml的部分:

    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="150" minSpareThreads="4"/>

    <Connector executor="tomcatThreadPool"
           port="38765" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" maxThreads="150" />

但是,如果我从不同的浏览器运行每个请求,我会得到这种输出

STARTING REQUEST: 6009
STARTING REQUEST: 2792
STARTING REQUEST: 4504
ENDING REQUEST: 2792
ENDING REQUEST: 6009
ENDING REQUEST: 4504

所以我想知道,会话请求是否有同步的充分理由?如果没有,可以启用多线程吗?

1 个答案:

答案 0 :(得分:1)

默认情况下,JSP是多线程的。

会话请求未同步。

问题在于如何生成请求,而不是Tomcat如何处理请求。