private ScheduledExecutorService buildAndConfigureScheduledExecutorService(ScheduledExecutorFactory f, Properties p, String componentName) throws Exception {
Properties props = new Properties(); // defensive copy
if (p != null && !p.isEmpty()) props.putAll(p);
setComponentName(componentName, props);
setDefaultThreadPrio(KnownComponentNames.getDefaultThreadPrio(componentName), props);
return new LazyInitializingScheduledExecutorService(f, props);
}