Class ThreadUtils
- java.lang.Object
-
- org.apache.sshd.common.util.threads.ThreadUtils
-
public final class ThreadUtils extends Object
Utility class for thread pools.- Author:
- Apache MINA SSHD Project
-
-
Method Summary
-
-
-
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 ClassLoader resolveDefaultClassLoader(Object anchor)
-
resolveDefaultClassLoaders
public static Iterable<ClassLoader> resolveDefaultClassLoaders(Object anchor)
-
resolveDefaultClassLoaders
public static Iterable<ClassLoader> resolveDefaultClassLoaders(Class<?> anchor)
-
resolveDefaultClass
public static Class<?> resolveDefaultClass(Iterable<? extends ClassLoader> cls, String className)
-
createDefaultInstance
public static <T> T createDefaultInstance(Class<?> anchor, Class<? extends T> targetType, String className) throws ReflectiveOperationException
- Throws:
ReflectiveOperationException
-
createDefaultInstance
public static <T> T createDefaultInstance(ClassLoader cl, Class<? extends T> targetType, String className) throws ReflectiveOperationException
- Throws:
ReflectiveOperationException
-
createDefaultInstance
public static <T> T createDefaultInstance(Iterable<? extends ClassLoader> cls, Class<? extends T> targetType, String className) throws ReflectiveOperationException
- Throws:
ReflectiveOperationException
-
resolveDefaultClassLoader
public 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()
- 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 Iterator<ClassLoader> iterateDefaultClassLoaders(Class<?> anchor)
-
newFixedThreadPoolIf
public static CloseableExecutorService newFixedThreadPoolIf(CloseableExecutorService executorService, String poolName, int nThreads)
-
newFixedThreadPool
public static CloseableExecutorService newFixedThreadPool(String poolName, int nThreads)
-
newCachedThreadPoolIf
public static CloseableExecutorService newCachedThreadPoolIf(CloseableExecutorService executorService, String poolName)
-
newCachedThreadPool
public static CloseableExecutorService newCachedThreadPool(String poolName)
-
newSingleThreadScheduledExecutor
public static ScheduledExecutorService newSingleThreadScheduledExecutor(String poolName)
-
newSingleThreadExecutor
public static CloseableExecutorService newSingleThreadExecutor(String poolName)
-
-