I want to have two tasks – HandlerA and HandlerB being executed every 10 and every 20 seconds respectively.
If this solution is wrong, what is the best way to achieve this?
ScheduledExecutorService stp = Executors.newScheduledThreadPool(8);
stp.scheduleAtFixedRate(new HandlerA(), 0, 10, TimeUnit.SECONDS);
stp.scheduleAtFixedRate(new HandlerB(), 0, 20, TimeUnit.SECONDS);
is the scheduled task overwritten, when I schedule another one?
Your solution is correct. You are scheduling 2 separate tasks. Your ScheduledThreadPoolExecutor has core pool size = 8, this is more than enough to execute 2 scheduled tasks in parallel.