gpt4 book ai didi

java - 取消之前的请求

转载 作者:搜寻专家 更新时间:2023-11-01 03:26:21 25 4
gpt4 key购买 nike

对于每个请求,都会发生大量计算。平均而言,处理回复大约需要 10 分钟。同时,如果用户发送新请求;之前的请求完全没有继续下去的意义。

所以我写了一段代码,我基本上中断了执行它的前一个线程。在tomcat环境下是个好习惯吗?能不能有更好的方案来处理。中断tomcat线程可以吗?还是我应该管理自己的线程池,让线程池为我进行计算?


更多信息:基本上整个任务都是用 FutureTask 包装的。对于每个请求,都会执行此任务,并且对任务的引用由 ConcurrentHashMap 存储。对于每个请求, map 中的所有 future 都被“取消”,然后继续执行最新的请求。从而取消之前的请求。

最佳答案

Q> 我基本上是打断了之前执行它的线程。在tomcat环境下是个好习惯吗?
A> 我认为只要您愿意将 HTTP 线程阻塞 10 分钟就可以了。这意味着没有其他用户能够处理 HTTP 请求。否则创建您自己的线程池并对其进行管理。

问>在tomcat环境下是不是很好的做法?
A> 中断 RunnableCallable 可能很棘手。例如,如果您的线程正在进行 I/O 操作,中断会使数据处于损坏状态。除此之外,这是很正常的做法。我还建议使用您自己的线程池,以便您的服务器容量可预测。

你能把你的大任务分解成很多小任务吗?坚持条件并提前退出可能是中断的一个很好的替代方案。

或者,等待/确保第一个任务完成操作而其他任务只返回相同的值在您的环境中是否有意义?如果是这样,我宁愿选择那种方法而不是你的方法。 guava 库中的 LoadingCache 正是这样做的。

关于java - 取消之前的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com