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
Ответ 3
Создание ScheduledThreadPoolExecutor с использованием исполнителей
вы также можете посмотреть этот
http://tutorials.jenkov.com/java-util-concurrent/scheduledexecutorservice.html
если вы хотите использовать его периодически, вы должны использовать этот метод
scheduleAtFixedRate (Runnable, long initialDelay, long period, TimeUnit timeunit)