java取消_java – 取消之前的请求
對于每個請求,都會發生很多計算.平均而言,回復大約需要10分鐘來處理.現在同時,如果用戶發送新請求;以前的請求絕對沒有意義繼續下去.
所以我編寫了一個代碼,我基本上打斷了執行它的前一個線程.在tomcat環境中這是一個好習慣嗎?可以有更好的解決方案來處理它.是否可以中斷tomcat線程.
或者我應該管理自己的線程池并讓pool為我做計算?
更多信息:
基本上整個任務都包含FutureTask.對于每個請求,執行此任務,并且ConcurrentHashMap存儲對任務的引用.對于每個請求,地圖中的所有未來都被“取消”,然后繼續執行最新請求.因此取消先前的請求.
最佳答案 Q>我基本上打斷了執行它的前一個線程.在tomcat環境中這是一個好習慣嗎?
A>我認為只要您對HTTP線程被阻止10分鐘感到滿意就行了.這意味著沒有其他用戶能夠處理HTTP請求.否則,創建自己的線程池并進行管理.
Q>在tomcat環境中這是一個好習慣嗎?
A>中斷Runnables或Callables可能很棘手.例如,如果您的線程處于I / O操作的中間,則中斷可能會使數據處于損壞狀態.除此之外,這是很正常的做法.我還建議使用您自己的線程池,以便您的服務器容量可預測.
你能把你的大任務分解成很多小任務嗎?堅持有條件并提前退出可能是中斷的一個很好的選擇.
或者,是等待/確保第一個任務完成操作而其他人只是在您的環境中返回相同的值有意義嗎?如果是這樣,我寧愿選擇而不是你的方法.來自guava庫的LoadingCache就是這樣做的.
總結
以上是生活随笔為你收集整理的java取消_java – 取消之前的请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java前端长连接框架_Java如何实现
- 下一篇: java sscanf_sscanf 详