Package org.biojava.nbio.core.util
Class ConcurrencyTools
- java.lang.Object
-
- org.biojava.nbio.core.util.ConcurrencyTools
-
public class ConcurrencyTools extends java.lang.ObjectStatic utility to easily share a thread pool for concurrent/parallel/lazy execution. To exit cleanly,shutdown()orshutdownAndAwaitTermination()must be called after all tasks have been submitted.- Author:
- Mark Chapman
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.util.concurrent.ThreadPoolExecutorgetThreadPool()Returns current shared thread pool.static voidsetThreadPool(java.util.concurrent.ThreadPoolExecutor pool)Sets thread pool to any givenThreadPoolExecutorto allow use of an alternative execution style.static voidsetThreadPoolCPUsAvailable(int cpus)Sets thread pool to reserve a given number of processor cores for foreground or other use.static voidsetThreadPoolCPUsFraction(float fraction)Sets thread pool to a given fraction of the available processors.static voidsetThreadPoolDefault()Sets thread pool to default of 1 background thread for each processor core.static voidsetThreadPoolSingle()Sets thread pool to a single background thread.static voidsetThreadPoolSize(int threads)Sets thread pool to given size.static voidshutdown()Disables new tasks from being submitted and closes the thread pool cleanly.static voidshutdownAndAwaitTermination()Closes the thread pool.static <T> java.util.concurrent.Future<T>submit(java.util.concurrent.Callable<T> task)Queues up a task and adds a default log entry.static <T> java.util.concurrent.Future<T>submit(java.util.concurrent.Callable<T> task, java.lang.String message)Queues up a task and adds a log entry.
-
-
-
Method Detail
-
getThreadPool
public static java.util.concurrent.ThreadPoolExecutor getThreadPool()
Returns current shared thread pool. Starts up a new pool, if necessary.- Returns:
- shared thread pool
-
setThreadPoolCPUsAvailable
public static void setThreadPoolCPUsAvailable(int cpus)
Sets thread pool to reserve a given number of processor cores for foreground or other use.- Parameters:
cpus- number of processor cores to reserve
-
setThreadPoolCPUsFraction
public static void setThreadPoolCPUsFraction(float fraction)
Sets thread pool to a given fraction of the available processors.- Parameters:
fraction- portion of available processors to use in thread pool
-
setThreadPoolDefault
public static void setThreadPoolDefault()
Sets thread pool to default of 1 background thread for each processor core.
-
setThreadPoolSingle
public static void setThreadPoolSingle()
Sets thread pool to a single background thread.
-
setThreadPoolSize
public static void setThreadPoolSize(int threads)
Sets thread pool to given size.- Parameters:
threads- number of threads in pool
-
setThreadPool
public static void setThreadPool(java.util.concurrent.ThreadPoolExecutor pool)
Sets thread pool to any givenThreadPoolExecutorto allow use of an alternative execution style.- Parameters:
pool- thread pool to share
-
shutdown
public static void shutdown()
Disables new tasks from being submitted and closes the thread pool cleanly.
-
shutdownAndAwaitTermination
public static void shutdownAndAwaitTermination()
Closes the thread pool. Waits 1 minute for a clean exit; if necessary, waits another minute for cancellation.
-
submit
public static <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task, java.lang.String message)Queues up a task and adds a log entry.- Type Parameters:
T- type returned from the submitted task- Parameters:
task- submitted taskmessage- logged message- Returns:
- future on which the desired value is retrieved by calling get()
-
submit
public static <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> task)
Queues up a task and adds a default log entry.- Type Parameters:
T- type returned from the submitted task- Parameters:
task- submitted task- Returns:
- future on which the desired value is retrieved by calling get()
-
-