This implementation is an adapter for the provided JSE ScheduledExecutorService object.
package com.logicbig.example; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.scheduling.support.PeriodicTrigger; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ConcurrentTaskSchedulerExample { public static void main (String[] args) throws InterruptedException { ConcurrentTaskScheduler s = new ConcurrentTaskScheduler( Executors.newScheduledThreadPool(5)); for (int i = 0; i < 10; i++) { final int finalI = i; s.schedule(() -> { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.printf("task: %d. Thread: %s%n", finalI, Thread.currentThread().getName()); }, new PeriodicTrigger(1000)); } //shutting down after 5 sec Thread.sleep(5000); ((ExecutorService) s.getConcurrentExecutor()).shutdown(); } }
task: 2. Thread: pool-1-thread-3task: 0. Thread: pool-1-thread-1task: 3. Thread: pool-1-thread-5task: 4. Thread: pool-1-thread-4task: 1. Thread: pool-1-thread-2task: 9. Thread: pool-1-thread-2task: 5. Thread: pool-1-thread-1task: 6. Thread: pool-1-thread-3task: 7. Thread: pool-1-thread-5task: 8. Thread: pool-1-thread-4task: 0. Thread: pool-1-thread-1task: 4. Thread: pool-1-thread-5task: 2. Thread: pool-1-thread-2task: 3. Thread: pool-1-thread-3task: 1. Thread: pool-1-thread-4task: 5. Thread: pool-1-thread-5task: 9. Thread: pool-1-thread-1task: 6. Thread: pool-1-thread-2task: 8. Thread: pool-1-thread-4task: 7. Thread: pool-1-thread-3task: 3. Thread: pool-1-thread-3task: 1. Thread: pool-1-thread-5task: 4. Thread: pool-1-thread-2task: 2. Thread: pool-1-thread-4task: 0. Thread: pool-1-thread-1task: 5. Thread: pool-1-thread-3task: 6. Thread: pool-1-thread-2task: 9. Thread: pool-1-thread-5task: 8. Thread: pool-1-thread-4task: 7. Thread: pool-1-thread-1task: 3. Thread: pool-1-thread-3task: 0. Thread: pool-1-thread-1task: 4. Thread: pool-1-thread-5task: 1. Thread: pool-1-thread-2task: 2. Thread: pool-1-thread-4task: 6. Thread: pool-1-thread-3task: 8. Thread: pool-1-thread-4task: 9. Thread: pool-1-thread-1task: 5. Thread: pool-1-thread-5task: 7. Thread: pool-1-thread-2
Dependencies and Technologies Used:
Version compatibilities of spring-context with this example:
Versions in green have been tested.