我的要求是:我有一个后端服务器来处理不同会话中的http请求。在终止之前,每个session
可能需要多个http requests
和responses
。每个session
将花费一个帖子。我使用ThreadPoolExecutor
来管理thread
。
我的问题是:在提交http请求的任务时,如何让ThreadPoolExecutor
选择正确的线程来处理tasks
?这意味着如果任务是会话的第一个请求,则应选择空闲线程或创建新thread
;如果request
不是第一个thread
,则应选择处理同一requests
中session
之前的{{1}}。
答案 0 :(得分:0)
您的请求违反了线程 pool 的基本前提,其中所有线程都相同并在可用时重用。
你可以做些什么来实现你的目标是向你的池提交一个“元任务”,这将篡夺一个线程并阻止它直到会话完成。在会话状态中,保持对该元任务的引用并将工作提交到其中。在会话结束时,结束任务,然后自动将底层线程释放到池中。