我想在 Web 应用程序中使用线程池,它应该同时支持大量用户(约 3000 个用户)。我正在使用线程池执行的单独线程中调用 Web 服务。每当 Web 服务无法发送响应时,线程就会卡住。所以我想在 150 毫秒后停止/超时线程。这就是我现在正在做的事情:
自定义线程:
public class RetrieveDocTask implements Runnable {
public void run() {
//gather variables
//invoke webservice
}}
执行线程的过滤器:
public class DocFilter implements Filter {
private static ExecutorService executor = Executors.newCachedThreadPool();
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
RetrieveDocTask task=new RetrieveDocTask();
executor.execute(task);
}}
我浏览了互联网寻找解决方案,但没有一个对我有用。有些人说使用 Future 和 callable,而有些人要求创建 ThreadPoolExecutor 并指定超时。不知道为什么它不起作用。此外,是否可以为大量用户使用缓存池执行器。我是新手,需要尽快实施。