簡體   English   中英

Web應用程序[VehicleRouting]似乎已啟動名為[drools-worker-4]的線程,但未能停止它

[英]The web application [VehicleRouting] appears to have started a thread named [drools-worker-4] but has failed to stop it

我使用optaplanner構建了車輛路由Web應用程序。 當我嘗試將Web應用程序部署到tomcat 8服務器並嘗試從Web瀏覽器運行它時,它會在tomcat日志文件中生成警告。 日志中有一些關於我的Web應用程序的信息啟動了一個線程,但未能將其停止,這可能會導致內存泄漏。 我寫了一個destroy方法,其中我的ExecutorService對象將調用shutdown方法來確保啟動的每個線程都被終止。 這是我的代碼:

public class OptimizerService implements IOptimizerService {
    private ExecutorService executor;

    @Override
    public synchronized Boolean startSolving() throws Throwable {
        executor = Executors.newFixedThreadPool(2);
        ...
    }

    ...
    // other methods 
    ...

    @PreDestroy
    public synchronized void destroy() {
        executor.shutdown();
    }
}

但是,為什么我仍然在tomcat日志中得到那些警告? 這是tomcat日志:

09-Jun-2017 08:25:56.377 WARNING [http-nio-18081-exec-295] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [VehicleRouting] appears to have started a thread named [drools-worker-4] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 java.lang.Thread.run(Thread.java:745)

任何意見將不勝感激。 謝謝並恭祝安康。

executor.shutdownNow(); 中斷線程 ,但是executor.shutdown(); 才不是。 后者只是等到任務完成,如果您有運行2h的求解器,那么祝您好運...

如果Solver檢測到其線程被中斷,它將終止(與正常的Termination幾乎相同),后者KieSession.dispose()調用KieSession.dispose() 我假設dispose()負責處理所有流口水產生的線程。

至少這是理論:)

暫無
暫無

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

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