首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat并发

Tomcat并发
EN

Stack Overflow用户
提问于 2015-08-19 01:32:11
回答 1查看 577关注 0票数 0

我想同时使用servlet。

当然,与这个主题相关的问题很多,但我的servlet仍然是按顺序工作的。

我在Tomcat8中使用servlet,它使用Jena triplestore (与Apache一起使用)

我的servlet在ajax中从html调用,并使用response.getWriter().write()方法返回数据。

在servlet运行时,每个浏览器都会被阻塞,但我认为与servlet的并发工作无关(因为这是每个浏览器的工作)。

我在这里附上我的server.xml设置:

代码语言:javascript
复制
<Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443"
    maxThreads="300"
    acceptCount="200"
    minSpareThreads="100"
/>

和doGet方法:

代码语言:javascript
复制
@Override
public void init(ServletConfig conf) throws ServletException {
    System.out.println("Servlet Run");
}

@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    String data = request.getParameter("data");
    String[] spdata = data.split("\\|");
    
    String sen = spdata[0];
    String name = spdata[1];
    String id = spdata[2];
    
    System.out.println(sen + ' ' + name + ' ' + id);
    int user = id.hashCode();
    System.out.println("Load Init");
    DialogSystemForTomcat d = new DialogSystemForTomcat(user);
    System.out.println("After Init");
    System.out.println("Sentence: "+sen);
    String rtn = d.runJob(name, sen);
    response.getWriter().write(rtn);
    System.out.println("Return: "+rtn);
}

如您所见,我在doGet()方法中调用了另一个Java类,它真正地处理了我的输入。

(实际过程是在d.runjob()方法中完成的)

现在,它对所有输入都是顺序工作的,但我想对所有输入同时工作。

我该换什么?请帮帮忙。

=========================================

之后..。

我努力使过程越快越好。

但我不能让它同时发生。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-19 01:53:31

在servlet运行时,每个浏览器都会被阻塞,但我认为与servlet的并发工作无关(因为这是每个浏览器的工作)。

你搞错了。Servlet是并发的,除了您没有使用的过时的SingleThreadModel之外,除非它们包含同步的方法或块,而这个方法或块没有,或者信号量也是相同的。因此,此代码是并发的,除非未命名类中的处理是同步的,或者使用某种类型的信号量。

注意,在init()方法中有一个错误。它必须调用super.init(conf)。看看Javadoc。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32085138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档