final long INITIAL_DELAY = 500l;
final long DELAY = 1000l;
final String namingPattern = "_newSingleThreadScheduledExecutor";
final BasicThreadFactory.Builder builder = new BasicThreadFactory.Builder();
final BasicThreadFactory basicThreadFactory = builder.namingPattern(namingPattern).daemon(true).build();
final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor(basicThreadFactory);
final Runnable runnable = () -> System.out.println(Thread.currentThread().getName() + ": Hello!");
scheduledExecutorService.scheduleWithFixedDelay(runnable, INITIAL_DELAY, DELAY, TimeUnit.MILLISECONDS);
scheduledExecutorService.awaitTermination(5000l, TimeUnit.MILLISECONDS);
scheduledExecutorService.shutdown();
Output:
_newSingleThreadScheduledExecutor: Hello!
_newSingleThreadScheduledExecutor: Hello!
_newSingleThreadScheduledExecutor: Hello!
_newSingleThreadScheduledExecutor: Hello!
_newSingleThreadScheduledExecutor: Hello!