这是我的用例。
创建处理器很昂贵(大约1-3秒)。 但它不依赖于数据D.
我的计划是使用两个不同的线程并行执行网络调用和处理器创建。
我从来没有在app服务器中完成多线程编程。我的问题是在应用服务器(特别是Tomcat和Jetty)中处理线程的最佳方法是什么
感谢。
答案 0 :(得分:5)
IMO最好的办法是使用Executor框架。这使得处理并发变得更加容易。
以下是couple of tutorials,可帮助您入门。
您的代码在诸如Tomcat之类的Web容器中运行这一事实不应该让您感到烦恼。这意味着处理请求的实际线程实际上是一个工作线程,取自应用服务器本身管理的线程池。但是,只要你自己的线程干净地完成它们的工作(即只修改限制在这个实际请求中的数据并且不干扰其他外部线程),并且它们同时没有太多,所以应该没事。
答案 1 :(得分:4)
Tomcat 7支持Servlet 3.0及其异步servlet - 它维护自己的线程池,并提供标准API以在不同的线程中执行请求。您可以在此处查看示例:Async Servlets in Tomcat 7
答案 2 :(得分:0)
如果创建处理器(P)的成本很高,您是否可以预先创建P实例池并重新使用它们,就像创建数据库连接池一样?
Apache Commons Pool项目可以为您提供一个起点。