Timer görevlerinden zamanlanmış executor'lara
Sağlam zamanlanmış işler için Timer ve TimerTask'ı ScheduledExecutorService ile değiştirin.
Timer timer = new Timer("refresh-timer");
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
refresh();
}
}, 0, 60_000);
ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(2);
scheduler.scheduleAtFixedRate(
this::refresh, 0, 1, TimeUnit.MINUTES);
Daha iyi izolasyon
Yapılandırılabilir bir iş parçacığı havuzu, ilgisiz zamanlamaların tek bir kırılgan worker'ı paylaşmasını önler.
Sağlam yürütme
Başarısız olan bir görev, scheduler'ın kendisini sonlandırmaz.
Kontrol edilebilir yaşam döngüsü
Future, iptal, gecikmeler ve kapatma standart executor API'lerini kullanır.
JDK 5'ten (Eylül 2004) beri yaygın olarak kullanılabilir
Timer her görevi tek bir iş parçacığında çalıştırır, bu yüzden uzun süren bir görev diğerlerini geciktirir ve yakalanmamış bir istisna timer iş parçacığını sonlandırır. ScheduledExecutorService, executor çerçevesini kullanır, birden fazla worker'ı destekler, ScheduledFuture tanıtıcıları döndürür ve açık bir yaşam döngüsü yönetimi sağlar. Sahip bileşen, artık ihtiyaç duyulmadığında scheduler'ı kapatmalıdır.