Bazı asenkron arka plan görevlerini çalıştırmak için önbelleğe alınmış iş parçacığı havuzu ExecutorService kullanıyorum. ThreadFactory'a iş parçacığını ExecutorService'e (ihtiyaç duyulduğunda) vermesini sağladım. Önbelleğe alınmış iş parçacığı havuzunu anladığımda, iş parçacığı 60 saniye boşta kaldıktan sonra ExecutorService tarafından sonlandırılır.Java ExecutorService çağrı geri bildirimi sonlandır
İş parçacığı sona ermek üzereyken bir durum temizleme yapmak istiyorum. Bunu başarmanın en iyi yolu nedir? ExecutorService, iş parçacığının yaşam döngüsüne kolayca kanca sağlamaz.
ExecutorService'imi kapatmak istemiyorum - geldikleri gibi görevleri çalıştırırken kullanışlıdır.
ExecutorService executor = Executors.newCachedThreadPool(new MyThreadFactory());
// Do some work
executor.submit(new MyCallable());
// Need a way for the ExecutorService to notify me when it is about to
// terminate my thread - need to perform some cleanup
sayesinde
Shreyas sizin ThreadFactory
kodunda
+1. Sonlandırıcı işe yarayacak mı acaba? – Rom1
@ Rom1, birisi finalize'in uygulanmasını öneren cevap yazmıştı. Sanırım onu sildikleri çok kötü. Unutulmamalıdır ki, 'finalize' kullanmak, GC ve JVM'de bazı performans isabetlerine neden olmak demektir. –
Sonlandırma yaklaşımını kullanmaya çalıştım ama işe yaramadı. Yöntem çağrılmadı. –