public final class ThreadUtils extends Object
public static CloseableExecutorService protectExecutorServiceShutdown(CloseableExecutorService executorService, boolean shutdownOnExit)
CloseableExecutorService in such a way as to "protect"
it for calls to the ExecutorService.shutdown() or
ExecutorService.shutdownNow(). All other calls are delegated as-is
to the original service. Note: the exposed wrapped proxy will
answer correctly the ExecutorService.isShutdown() query if indeed
one of the shutdown methods was invoked.executorService - The original service - ignored if nullshutdownOnExit - If true then it is OK to shutdown the executor
so no wrapping takes place.public static CloseableExecutorService noClose(CloseableExecutorService executorService)
public static ClassLoader resolveDefaultClassLoader(Object anchor)
public static Iterable<ClassLoader> resolveDefaultClassLoaders(Object anchor)
public static <T> T createDefaultInstance(Class<?> anchor, Class<T> targetType, String className) throws ReflectiveOperationException
ReflectiveOperationExceptionpublic static <T> T createDefaultInstance(ClassLoader cl, Class<T> targetType, String className) throws ReflectiveOperationException
ReflectiveOperationExceptionpublic static <T> T createDefaultInstance(Iterable<ClassLoader> cls, Class<T> targetType, String className) throws ReflectiveOperationException
ReflectiveOperationExceptionpublic static ClassLoader resolveDefaultClassLoader(Class<?> anchor)
Attempts to find the most suitable ClassLoader as follows:
Check the Thread.getContextClassLoader() value
If no thread context class loader then check the anchor class (if given) for its class loader
If still no loader available, then use ClassLoader.getSystemClassLoader()
anchor - The anchor Class to use if no current thread
- ignored if null
context class loaderClassLoaderpublic static Iterable<ClassLoader> resolveDefaultClassLoaders(Class<?> anchor)
public static CloseableExecutorService newFixedThreadPoolIf(CloseableExecutorService executorService, String poolName, int nThreads)
public static CloseableExecutorService newFixedThreadPool(String poolName, int nThreads)
public static CloseableExecutorService newCachedThreadPoolIf(CloseableExecutorService executorService, String poolName)
public static CloseableExecutorService newCachedThreadPool(String poolName)
public static ScheduledExecutorService newSingleThreadScheduledExecutor(String poolName)
public static CloseableExecutorService newSingleThreadExecutor(String poolName)
Copyright © 2008–2018 The Apache Software Foundation. All rights reserved.