diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ExecutorFactory.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ExecutorFactory.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ExecutorFactory.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ExecutorFactory.java new file mode 100644 index 0000000000..29579c64b7 --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/distribution/engine/ExecutorFactory.java @@ -0,0 +1,43 @@ +package org.openecomp.sdc.be.components.distribution.engine; + +import com.google.common.util.concurrent.ThreadFactoryBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import java.lang.Thread.UncaughtExceptionHandler; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ThreadFactory; +@Component("executorFactory") +/** + * Allows to create next kinds of single thread executors: SingleThreadExecutor and SingleThreadScheduledExecutor + */ +public class ExecutorFactory { + + private static final Logger logger = LoggerFactory.getLogger(EnvironmentsEngine.class); + + public ExecutorService create(String name, UncaughtExceptionHandler exceptionHandler){ + logger.info("Going to create single thread executor. "); + ThreadFactory threadFactory = createThreadFactory(name, exceptionHandler); + return Executors.newSingleThreadExecutor(threadFactory); + } + + public ScheduledExecutorService createScheduled(String name){ + logger.info("Going to create single thread scheduled executor. "); + ThreadFactory threadFactory = createThreadFactory(name, + (t, e) -> LoggerFactory.getLogger(UncaughtExceptionHandler.class).error("An error occurred: ", e)); + return Executors.newSingleThreadScheduledExecutor(threadFactory); + } + + private ThreadFactory createThreadFactory(String name, UncaughtExceptionHandler exceptionHandler) { + String nameFormat = name + "-%d"; + return new ThreadFactoryBuilder() + .setThreadFactory(Executors.defaultThreadFactory()) + .setNameFormat(nameFormat) + .setUncaughtExceptionHandler(exceptionHandler) + .setDaemon(true) + .build(); + } +} |