문제

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.

다른 팁

Why do you ask? That solution is fine. Each invocation of scheduleAtFixedRate starts an individual scheduler i.e. adding HandlerA twice runs it with two independent schedulers.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top