我有一个 Web 应用程序,在单个请求中可能需要加载数百个数据。现在的问题是数据是分散的。所以,我必须从几个地方加载数据,对它们应用过滤器,处理它们然后做出响应。依次执行所有这些操作会使 servlet变慢!
所以我想到了将所有数据加载到单独的线程中,例如t[i] = new Thread(loadData).start();
,等待所有线程完成使用while(i < count) t[i].join();
,完成后,加入数据并响应。
现在我不确定这种方法是否正确或有更好的方法。我在某处读到过,不建议在 servlet 中生成线程。
我想要的代码看起来像这样。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Iterable<?> requireddata = requiredData(request);
Thread[] t = new Thread[requireddata.size];
int i = 0;
while (requireddata.hasNext())
{
t[i] = new Thread(new loadData(requiredata.next())).start();
i++;
}
for(i = 0 ; i < t.length ; i++)
t[i].join();
// after getting the data process and respond!
}