Zamanlanmış konuları çalıştırmak için ScheduledExecutorService
kullanıyorum.
ServletContextListener.contextDestroyed
uygulandım ve ScheduledExecutorService.shutdownNow
ve awaitTermination
çağırdı. İşte Tomcat 7 ve ScheduledExecutorService.shutdown
CİDDİ: Hala
@Override public void contextDestroyed(ServletContextEvent servletcontextevent) { pool.shutdownNow(); // Disable new tasks from being submitted try { // Wait a while for existing tasks to terminate if (!pool.awaitTermination(50, TimeUnit.SECONDS)) { pool.shutdownNow(); // Cancel currently executing tasks System.err.println("Pool did not terminate"); } } catch (InterruptedException ie) { // (Re-)Cancel if current thread also interrupted pool.shutdownNow(); // Preserve interrupt status Thread.currentThread().interrupt(); } }
, Tomcat 7'den aşağıdaki hatayı alıyorum web uygulaması [/ servlet] bir başlatılmış görünüyor [Timer-0] adlı iş parçacığı ancak bunu durduramadı. Bu bir bellek sızıntısı oluşturmak için büyük olasılıkla olur.
Bu günlüğe göz ardı edilebilir mi? Yoksa yanlış bir şey yapıyorum?
Teşekkür
Demek istediğim, benim düşüncem: Temizlik yapmak için sorumluluklarınız nerede duruyor? Burada başka ne yapılabilir? Kutuyu ateş hortumuyla mı vurdun? Tüm ciddiyetle, söylemek istediğim şey, sadece yapabileceğiniz her şeyi yapıyormuş gibi görünmesidir ... Bu hatayı görmezden gelirim. – ControlAltDel
Daha önceki gönderime bakabilirsiniz :) http://stackoverflow.com/questions/9926356/scheduledexecutorservice-when-shutdown-should-be-invoked – lili