在我的Java Web應用程式中,我正在使用一個ScheduledThreadPoolExecutor來定期檢查資料庫連接狀態。
final ScheduledExecutorService executor = Executors. newScheduledThreadPool(0)。
Runnable task = new Runnable() {
public void run() {
//檢查資料庫連接的狀態,并記錄結果。
}
};
executor.scheduleWithFixedDelay(task, 0, 10, TimeUnit.MINUTES)。
然而,當我從 Web 應用程式中注銷,并關閉瀏覽器視窗時,我看到(從日志中)它仍在檢查連接狀態。
有什么方法可以在關閉 Web 應用程式時終止這個執行器/執行緒嗎?
uj5u.com熱心網友回復:
我不確定是否已經完全理解了這個問題,但是在退出應用程式的部分,你可能應該做以下事情
executor.shutdown()。
try { executor.awaitTermination(10, TimeUnit.SECONDS); } catch (InterruptedException e) { }
希望能有所幫助
uj5u.com熱心網友回復:執行緒池的生命力
執行器服務的執行緒池可以在其父級應用結束后繼續運行。這包括網路應用。因此,在退出應用程式時,您應始終對執行器進行優雅的關閉。否則,支持的執行緒可能會像僵尸一樣繼續無限期地運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/315148.html
標籤:
上一篇:VSCodesettings.json界面中缺少搜索欄
下一篇:提交表單后重新啟動Servlet
