我有一個web應用程序,在單個請求可能需要加載數百個數據。現在問題是數據是分散的。所以,我必須從幾個地方加載數據,在它們上應用過濾器,處理它們然後做出響應。依次執行所有這些操作使得servlet 變得緩慢!在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!
}