Trong ứng dụng web của tôi, tôi đã tạo một dịch vụ đang sử dụng ExecutorService
với kích thước cố định ThreadPool. Tôi tái sử dụng cùng một ExecutorService
trong suốt toàn bộ thời gian áp dụng.Tắt máy ExecutorService một cách trang nhã trong ứng dụng web?
private static ExecutorService pool = Executors.newFixedThreadPool(8);
Tất cả đang chạy trong Tomcat mà mang lại cho tôi những lỗi sau khi shuting xuống:
appears to have started a thread named [pool-1-thread-1] but has failed to stop it. This is very likely to create a memory leak.
tôi nhận ra tôi cần phải tắt ExecutorService trước shuting tomcat xuống. Soms SO thread đã nói về điều này nhưng tôi không thể tìm thấy một cách sạch sẽ để xử lý này.
Tôi có nên sử dụng số ShutdownHook
như đề xuất @ Tim-bender trong Graceful shutdown of threads and executor không? Hoặc tôi nên sử dụng một CachedThreadPool thay thế?
Chính xác những gì tôi cần biết –