我想同时使用servlet。
当然,与这个主题相关的问题很多,但我的servlet仍然是按顺序工作的。
我在Tomcat8中使用servlet,它使用Jena triplestore (与Apache一起使用)
我的servlet在ajax中从html调用,并使用response.getWriter().write()方法返回数据。
在servlet运行时,每个浏览器都会被阻塞,但我认为与servlet的并发工作无关(因为这是每个浏览器的工作)。
我在这里附上我的server.xml设置:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="300"
acceptCount="200"
minSpareThreads="100"
/>和doGet方法:
@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()方法中完成的)
现在,它对所有输入都是顺序工作的,但我想对所有输入同时工作。
我该换什么?请帮帮忙。
=========================================
之后..。
我努力使过程越快越好。
但我不能让它同时发生。
发布于 2015-08-19 01:53:31
在servlet运行时,每个浏览器都会被阻塞,但我认为与servlet的并发工作无关(因为这是每个浏览器的工作)。
你搞错了。Servlet是并发的,除了您没有使用的过时的SingleThreadModel之外,除非它们包含同步的方法或块,而这个方法或块没有,或者信号量也是相同的。因此,此代码是并发的,除非未命名类中的处理是同步的,或者使用某种类型的信号量。
注意,在init()方法中有一个错误。它必须调用super.init(conf)。看看Javadoc。
https://stackoverflow.com/questions/32085138
复制相似问题