1 package org.openecomp.sdc.be.components.distribution.engine;
3 import com.google.common.util.concurrent.ThreadFactoryBuilder;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6 import org.springframework.stereotype.Component;
8 import java.lang.Thread.UncaughtExceptionHandler;
9 import java.util.concurrent.ExecutorService;
10 import java.util.concurrent.Executors;
11 import java.util.concurrent.ScheduledExecutorService;
12 import java.util.concurrent.ThreadFactory;
13 @Component("executorFactory")
15 * Allows to create next kinds of single thread executors: SingleThreadExecutor and SingleThreadScheduledExecutor
17 public class ExecutorFactory {
19 private static final Logger logger = LoggerFactory.getLogger(EnvironmentsEngine.class);
21 public ExecutorService create(String name, UncaughtExceptionHandler exceptionHandler){
22 logger.info("Going to create single thread executor. ");
23 ThreadFactory threadFactory = createThreadFactory(name, exceptionHandler);
24 return Executors.newSingleThreadExecutor(threadFactory);
27 public ScheduledExecutorService createScheduled(String name){
28 logger.info("Going to create single thread scheduled executor. ");
29 ThreadFactory threadFactory = createThreadFactory(name,
30 (t, e) -> LoggerFactory.getLogger(UncaughtExceptionHandler.class).error("An error occurred: ", e));
31 return Executors.newSingleThreadScheduledExecutor(threadFactory);
34 private ThreadFactory createThreadFactory(String name, UncaughtExceptionHandler exceptionHandler) {
35 String nameFormat = name + "-%d";
36 return new ThreadFactoryBuilder()
37 .setThreadFactory(Executors.defaultThreadFactory())
38 .setNameFormat(nameFormat)
39 .setUncaughtExceptionHandler(exceptionHandler)