簡體   English   中英

在從servlet過濾器生成的單獨線程中運行耗時過程

[英]Running a time taking process in a separate thread spawning from a servlet filter

我的應用程序中有一個servlet過濾器,我需要從中調用一個Web服務,該服務需要一些時間來返回響應,然后將響應存儲在會話中以供以后使用。 我希望在執行此耗時的過程之前,我的過濾器應該繼續運行,並且也應該繼續調用其他過濾器,以免影響性能。

所以這就是我在doFilter()中要做的事情。 為此創建另一個線程。

log.debug("start filter");
CustomThread ct=new CustomThread();
ct.start(); //invoke web service in run()
log.debug("continuing with filter");

考慮到將有超過1000個用戶點擊該應用程序,這種方法是否可以正常工作。 這種情況在某些情況下會失敗嗎? 請建議我是否需要采取其他路線。

主要問題是您每次都啟動一個新線程。 這很耗時,並且如果您收到許多並發請求,可能會使服務器癱瘓,因為您對產生的線程數沒有任何限制。

我將改用ThreadPoolExecutor來解決這兩個問題。

您應該使用某種Executor ,而不要自己擔心線程管理。 Executors提供了各種簡單的方法來創建執行程序實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM