Mam następujący problem i chciałbym się dowiedzieć, co dokładnie się dzieje. Używam Java ScheduledExecutorService do uruchamiania zadania co pięć minut. Pracuje bardzo dobrze. Executory całkowicie zmieniły sposób programowania wątków w Javie.Nieobsługiwane wyjątki z wykonawcami zaplanowanymi w języku Java
Teraz przeglądałem dokumentację Java, aby uzyskać informacje o tym, jak zachowałoby się, gdyby zaplanowane zadanie zakończyło się niepowodzeniem z nieobsługiwanym wyjątkiem, ale nie mogło znaleźć nic.
Czy następne zaplanowane zadanie nadal będzie uruchamiane? Jeśli istnieje nieobsługiwany wyjątek, zaplanowany executor zatrzymuje zadanie planowania? Czy ktoś może wskazać informacje dotyczące tego prostego problemu?
Wielkie dzięki.
dziękuję za odpowiedzi. Nie widziałem tego w API Doc. –
Szybkie przeglądanie źródła dla ThreadPoolExecutor (na którym zaimplementowano STPE) sugeruje, że RuntimeExceptions zostaną starannie przechwycone i zgłoszone za pomocą ScheduledFuture, ale także spowodują zakończenie wątku roboczego. TPE zauważy to zakończenie wątku roboczego i w razie potrzeby zakręci nowy zamiennik. Zobacz: runWorker() i processWorkerExit() w java.util.concurrent.ThreadPoolExecutor w źródłach JDK lub w witrynie Douga Lea. – andersoj