Skip to content

ScheduledExecutorService or ScheduledThreadPoolExecutor

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.

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