Class ThreadUtils
- java.lang.Object
-
- org.apache.sshd.common.util.threads.ThreadUtils
-
public final class ThreadUtils extends java.lang.Object
Utility class for thread pools.
-
-
Constructor Summary
Constructors Modifier Constructor Description private
ThreadUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> T
createDefaultInstance(java.lang.Class<?> anchor, java.lang.Class<T> targetType, java.lang.String className)
static <T> T
createDefaultInstance(java.lang.ClassLoader cl, java.lang.Class<T> targetType, java.lang.String className)
static <T> T
createDefaultInstance(java.lang.Iterable<? extends java.lang.ClassLoader> cls, java.lang.Class<T> targetType, java.lang.String className)
static java.util.Iterator<java.lang.ClassLoader>
iterateDefaultClassLoaders(java.lang.Class<?> anchor)
static CloseableExecutorService
newCachedThreadPool(java.lang.String poolName)
static CloseableExecutorService
newCachedThreadPoolIf(CloseableExecutorService executorService, java.lang.String poolName)
static CloseableExecutorService
newFixedThreadPool(java.lang.String poolName, int nThreads)
static CloseableExecutorService
newFixedThreadPoolIf(CloseableExecutorService executorService, java.lang.String poolName, int nThreads)
static CloseableExecutorService
newSingleThreadExecutor(java.lang.String poolName)
static java.util.concurrent.ScheduledExecutorService
newSingleThreadScheduledExecutor(java.lang.String poolName)
static CloseableExecutorService
noClose(CloseableExecutorService executorService)
static CloseableExecutorService
protectExecutorServiceShutdown(CloseableExecutorService executorService, boolean shutdownOnExit)
Wraps anCloseableExecutorService
in such a way as to "protect" it for calls to theExecutorService.shutdown()
orExecutorService.shutdownNow()
.static java.lang.ClassLoader
resolveDefaultClassLoader(java.lang.Class<?> anchor)
Attempts to find the most suitableClassLoader
as follows:static java.lang.ClassLoader
resolveDefaultClassLoader(java.lang.Object anchor)
static java.lang.Iterable<java.lang.ClassLoader>
resolveDefaultClassLoaders(java.lang.Class<?> anchor)
static java.lang.Iterable<java.lang.ClassLoader>
resolveDefaultClassLoaders(java.lang.Object anchor)
-
-
-
Method Detail
-
protectExecutorServiceShutdown
public static CloseableExecutorService protectExecutorServiceShutdown(CloseableExecutorService executorService, boolean shutdownOnExit)
Wraps anCloseableExecutorService
in such a way as to "protect" it for calls to theExecutorService.shutdown()
orExecutorService.shutdownNow()
. All other calls are delegated as-is to the original service. Note: the exposed wrapped proxy will answer correctly theExecutorService.isShutdown()
query if indeed one of theshutdown
methods was invoked.- Parameters:
executorService
- The original service - ignored ifnull
shutdownOnExit
- Iftrue
then it is OK to shutdown the executor so no wrapping takes place.- Returns:
- Either the original service or a wrapped one - depending on the value of the shutdownOnExit parameter
-
noClose
public static CloseableExecutorService noClose(CloseableExecutorService executorService)
-
resolveDefaultClassLoader
public static java.lang.ClassLoader resolveDefaultClassLoader(java.lang.Object anchor)
-
resolveDefaultClassLoaders
public static java.lang.Iterable<java.lang.ClassLoader> resolveDefaultClassLoaders(java.lang.Object anchor)
-
resolveDefaultClassLoaders
public static java.lang.Iterable<java.lang.ClassLoader> resolveDefaultClassLoaders(java.lang.Class<?> anchor)
-
createDefaultInstance
public static <T> T createDefaultInstance(java.lang.Class<?> anchor, java.lang.Class<T> targetType, java.lang.String className) throws java.lang.ReflectiveOperationException
- Throws:
java.lang.ReflectiveOperationException
-
createDefaultInstance
public static <T> T createDefaultInstance(java.lang.ClassLoader cl, java.lang.Class<T> targetType, java.lang.String className) throws java.lang.ReflectiveOperationException
- Throws:
java.lang.ReflectiveOperationException
-
createDefaultInstance
public static <T> T createDefaultInstance(java.lang.Iterable<? extends java.lang.ClassLoader> cls, java.lang.Class<T> targetType, java.lang.String className) throws java.lang.ReflectiveOperationException
- Throws:
java.lang.ReflectiveOperationException
-
resolveDefaultClassLoader
public static java.lang.ClassLoader resolveDefaultClassLoader(java.lang.Class<?> anchor)
Attempts to find the most suitable
ClassLoader
as follows:Check the
Thread.getContextClassLoader()
valueIf 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()
- Parameters:
anchor
- The anchorClass
to use if no current thread context class loader - ignored ifnull
- Returns:
- The resolved
ClassLoader
- Note: might still benull
if went all the way "down" to the system class loader and it was alsonull
.
-
iterateDefaultClassLoaders
public static java.util.Iterator<java.lang.ClassLoader> iterateDefaultClassLoaders(java.lang.Class<?> anchor)
-
newFixedThreadPoolIf
public static CloseableExecutorService newFixedThreadPoolIf(CloseableExecutorService executorService, java.lang.String poolName, int nThreads)
-
newFixedThreadPool
public static CloseableExecutorService newFixedThreadPool(java.lang.String poolName, int nThreads)
-
newCachedThreadPoolIf
public static CloseableExecutorService newCachedThreadPoolIf(CloseableExecutorService executorService, java.lang.String poolName)
-
newCachedThreadPool
public static CloseableExecutorService newCachedThreadPool(java.lang.String poolName)
-
newSingleThreadScheduledExecutor
public static java.util.concurrent.ScheduledExecutorService newSingleThreadScheduledExecutor(java.lang.String poolName)
-
newSingleThreadExecutor
public static CloseableExecutorService newSingleThreadExecutor(java.lang.String poolName)
-
-