如何选择一个特定的线程来在Java中的ThreadPoolExecutor中运行所选的任务?

时间:2014-12-12 09:46:45

标签: java session httprequest httpresponse threadpoolexecutor

我的要求是:我有一个后端服务器来处理不同会话中的http请求。在终止之前,每个session可能需要多个http requestsresponses。每个session将花费一个帖子。我使用ThreadPoolExecutor来管理thread

我的问题是:在提交http请求的任务时,如何让ThreadPoolExecutor选择正确的线程来处理tasks?这意味着如果任务是会话的第一个请求,则应选择空闲线程或创建新thread;如果request不是第一个thread,则应选择处理同一requestssession之前的{{1}}。

1 个答案:

答案 0 :(得分:0)

您的请求违反了线程 pool 的基本前提,其中所有线程都相同并在可用时重用。

你可以做些什么来实现你的目标是向你的池提交一个“元任务”,这将篡夺一个线程并阻止它直到会话完成。在会话状态中,保持对该元任务的引用并将工作提交到其中。在会话结束时,结束任务,然后自动将底层线程释放到池中。