簡體   English   中英

Java中的線程池問題

[英]Thread pool issue in java

嗨,以下代碼在應用程序中使用

threadPool.shutdown();
        while (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) {
            logger.info("Waiting for "
                    + (threadPool.getQueue().size() + threadPool
                            .getActiveCount()) + " jobs to complete.");
        }

當應用程序運行時,它陷入了循環

  • 等待134個作業完成。
  • 等待134個作業完成。
  • 等待134個作業完成。

上面的語句是連續出現的,實際上線程正在對數據庫執行更新操作。將時間增加到10秒以上將在這種情況下有所幫助。任何建議都是有幫助的

ThreadPoolExecutor.shutdown()的文檔說:

啟動有序關閉,在該關閉中執行先前提交的任務,但不接受任何新任務。 如果已關閉,則調用不會產生任何其他影響。

這意味着您的工作線程負責關閉自己。 您尚未為員工提供代碼,但我假設他們正在執行不會退出的阻塞操作。 解決此問題的常用方法是讓工作人員例行檢查在shutdown調用之前設置的某種共享變量。 他們被有效告知他們停止所做的任何事情。 AtomicBoolean應該可以解決問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM