I’m building an Android App which have to periodically do something in a Service. And I found that using ScheduledThreadPoolExecutor
and ScheduledExecutorService
is preferable to Timer
.
Can anyone explain the difference between ScheduledExecutorService
and ScheduledThreadPoolExecutor
and which one is more suitable for Android?
Update
I just found this article and this post explain the difference between several way to implement repeating periodic tasks. In my case, ScheduledThreadPoolExecutor
and AlarmManager
is more suitable.
Advertisement
Answer
ScheduledExecutorService
is an interface (a contract) and ScheduledThreadPoolExecutor
implements that interface.
Since you cannot directly instantiate an interface, you have to use implementation through instantiating ScheduledThreadPoolExecutor
directly or through means of factory method such as java.util.concurrent.Executors
that returns an instance of ScheduledThreadPoolExecutor
.
e.g
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); //returns a ScheduledFuture
Have a look at Scheduled Executor Service Usage for Andriod