我正在使用Java,我想在我的应用程序中保持servlet不断运行,但我不知道怎么做.我的servlet有一个方法,它每天从数据库中提供用户的计数以及整个数据库中用户的总数.所以我想保持servlet不断运行.
multithreading servlets background-process java-ee scheduledexecutorservice
我正在使用Struts和Spring编写Java EE应用程序.在其中一个操作中,存在大量数据库处理,因此存在性能问题.我想知道的是我可以在这里使用多线程吗?我认为Java EE规范不允许创建自定义线程,而不是由Server创建的线程(我使用Weblogic).请指导我完成这个.
我的Java(Tomcat 8)Web服务器是否可以安全地生成线程以响应HTTP请求?我正在看帖子和论坛,有些人说这绝对没问题,其他人说不要这样做.
我的用例是这样的:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
...
final MyResult res = new MyResult();
Thread first = new Thread(new Runnable() {
@Override
public void run() {
// put this into res
}
});
Thread second = new Thread(new Runnable() {
@Override
public void run() {
// put that into res
}
});
first.start();
second.start();
first.join(10000);
second.join(10000);
// return res
}
Run Code Online (Sandbox Code Playgroud)
当我说安全时,我的意思是关于Web服务器的稳定性,我提出的内容是否存在任何内在的危险.正如@Burrman指出的那样,线程池在这里是个好主意,我会这样做.如果我正在使用线程池,那么我应该关注或需要解决的servlet容器是否存在任何其他潜在问题?
我想我正在考虑的是,例如,JDBC连接.我相信建议使用JNDI资源等进行设置,并使用Tomcat配置进行配置.是否有必要或建议产生任意线程,如我的例子?