ScheduledExecutorService или ScheduledThreadPoolExecutor

Я создаю приложение для Android, которое должно периодически делать что-то в службе. И я обнаружил, что использование ScheduledThreadPoolExecutor и ScheduledExecutorService предпочтительнее Timer.

Может ли кто-нибудь объяснить разницу между ScheduledExecutorService и ScheduledThreadPoolExecutor и какой из них больше подходит для Android?

Обновление

Я только что нашел эту статью и этот пост объяснил разницу между несколькими способ реализации повторяющихся периодических задач. В моем случае ScheduledThreadPoolExecutor и AlarmManager более подходят.

Ответ 1

ScheduledExecutorService - это интерфейс (контракт) и ScheduledThreadPoolExecutor реализует этот интерфейс.

Поскольку вы не можете напрямую создавать интерфейс, вам нужно использовать реализацию с помощью создания экземпляра ScheduledThreadPoolExecutor напрямую или с помощью метода factory, такого как java.util.concurrent.Executors, который возвращает экземпляр ScheduledThreadPoolExecutor.

например

ScheduledExecutorService scheduler =
 Executors.newScheduledThreadPool(1);

scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); //returns a ScheduledFuture

Посмотрите Запланированное использование службы-исполнителя для Andriod

Ответ 2

Это то же самое, ScheduledThreadPoolExecutor представляет собой реализацию ScheduledExecutorService