package com.googlecode.totallylazy.concurrent; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ThreadFactory; public class NamedExecutors { public static ThreadFactory namedThreadFactory(String name, ThreadFactory threadFactory) { return new NamedThreadFactory(name, threadFactory); } public static ThreadFactory namedThreadFactory(String name) { return new NamedThreadFactory(name, Executors.defaultThreadFactory()); } public static ThreadFactory namedThreadFactory(Class<?> creatingClass) { return namedThreadFactory(creatingClass.getName()); } public static ExecutorService newCpuThreadPool(String name) { return newFixedThreadPool(Runtime.getRuntime().availableProcessors(), name); } public static ExecutorService newCpuThreadPool(Class<?> creatingClass) { return newFixedThreadPool(Runtime.getRuntime().availableProcessors(), creatingClass); } public static ExecutorService newFixedThreadPool(int nThreads, String name) { return Executors.newFixedThreadPool(nThreads, namedThreadFactory(name)); } public static ExecutorService newFixedThreadPool(int nThreads, Class<?> creatingClass) { return Executors.newFixedThreadPool(nThreads, namedThreadFactory(creatingClass)); } public static ExecutorService newSingleThreadExecutor(String name) { return Executors.newSingleThreadExecutor(namedThreadFactory(name)); } public static ExecutorService newSingleThreadExecutor(Class<?> creatingClass) { return Executors.newSingleThreadExecutor(namedThreadFactory(creatingClass)); } public static ExecutorService newCachedThreadPool(String name) { return Executors.newCachedThreadPool(namedThreadFactory(name)); } public static ExecutorService newCachedThreadPool(Class<?> creatingClass) { return Executors.newCachedThreadPool(namedThreadFactory(creatingClass)); } public static ScheduledExecutorService newSingleThreadScheduledExecutor(String name) { return Executors.newSingleThreadScheduledExecutor(namedThreadFactory(name)); } public static ScheduledExecutorService newSingleThreadScheduledExecutor(Class<?> creatingClass) { return Executors.newSingleThreadScheduledExecutor(namedThreadFactory(creatingClass)); } public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, String name) { return Executors.newScheduledThreadPool(corePoolSize, namedThreadFactory(name)); } public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize, Class<?> creatingClass) { return Executors.newScheduledThreadPool(corePoolSize, namedThreadFactory(creatingClass)); } }