Package no.digipost
Class DiggConcurrent
- java.lang.Object
-
- no.digipost.DiggConcurrent
-
public class DiggConcurrent extends Object
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
ensureShutdown(String executorName, ExecutorService executor, Duration timeoutBeforeForcefulShutdown)
Perform an orderly shutdown, trying to wait for any currently running tasks to finish, or else forcefully shutdown the executor if the tasks are not able to finish their work within the given timeout duration.static void
ensureShutdown(ExecutorService executor, Duration timeoutBeforeForcefulShutdown)
Perform an orderly shutdown, trying to wait for any currently running tasks to finish, or else forcefully shutdown the executor if the tasks are not able to finish their work within the given timeout duration.static ExecutorService
externallyManaged(ExecutorService executor)
Wraps anotherExecutorService
as an "externally managed executor service", which will discard any invocations of the methods used to manage the lifecycle of the ExecutorService itself.static ExecutorService
fixedThreadPool(int threadAmount, String name)
static boolean
isExternallyManaged(ExecutorService executor)
Determine if the givenExecutorService
is marked asexternally managed
.static ScheduledExecutorService
scheduled(int threadAmount, String name)
static ScheduledExecutorService
scheduledSingleThreaded(String name)
static ExecutorService
singleThreaded(String name)
static ThreadFactory
threadNamingFactory(String threadBaseName)
Create a thread factory based onExecutors.defaultThreadFactory()
, but naming the created threads using the giventhreadBaseName
and an incrementing number for each thread created by the factory.static ThreadFactory
threadNamingFactory(LongFunction<String> threadName)
Create a thread factory based onExecutors.defaultThreadFactory()
, but naming the created threads using the result of the given givenlong -> String
function, which argument is the number of the created thread.static ThreadFactory
threadNamingFactory(LongFunction<String> threadName, ThreadFactory backingFactory)
Create a thread factory delegating to the givenbackingFactory
for creating new threads, but naming the created threads using the result of the given givenlong -> String
function, which argument is the number of the created thread.
-
-
-
Method Detail
-
fixedThreadPool
public static ExecutorService fixedThreadPool(int threadAmount, String name)
-
singleThreaded
public static ExecutorService singleThreaded(String name)
-
scheduledSingleThreaded
public static ScheduledExecutorService scheduledSingleThreaded(String name)
-
scheduled
public static ScheduledExecutorService scheduled(int threadAmount, String name)
-
threadNamingFactory
public static ThreadFactory threadNamingFactory(String threadBaseName)
Create a thread factory based onExecutors.defaultThreadFactory()
, but naming the created threads using the giventhreadBaseName
and an incrementing number for each thread created by the factory. The threads will have names on the formthreadBaseName-N
.- Parameters:
threadBaseName
- the base name for threads created by the factory.
-
threadNamingFactory
public static ThreadFactory threadNamingFactory(LongFunction<String> threadName)
Create a thread factory based onExecutors.defaultThreadFactory()
, but naming the created threads using the result of the given givenlong -> String
function, which argument is the number of the created thread.- Parameters:
threadName
- function used for naming each thread created by the factory.
-
threadNamingFactory
public static ThreadFactory threadNamingFactory(LongFunction<String> threadName, ThreadFactory backingFactory)
Create a thread factory delegating to the givenbackingFactory
for creating new threads, but naming the created threads using the result of the given givenlong -> String
function, which argument is the number of the created thread.- Parameters:
threadName
- function used for naming each thread created by the factory.backingFactory
- the factory used for creating new threads.
-
externallyManaged
public static ExecutorService externallyManaged(ExecutorService executor)
Wraps anotherExecutorService
as an "externally managed executor service", which will discard any invocations of the methods used to manage the lifecycle of the ExecutorService itself. This includes the methods:ExecutorService.shutdown()
ExecutorService.shutdownNow()
(returns empty list)ExecutorService.awaitTermination(long, TimeUnit)
(immediately returns with the result ofExecutorService.isTerminated()
)
ensureShutdown(ExecutorService, Duration)
.
-
isExternallyManaged
public static boolean isExternallyManaged(ExecutorService executor)
Determine if the givenExecutorService
is marked asexternally managed
.
-
ensureShutdown
public static void ensureShutdown(ExecutorService executor, Duration timeoutBeforeForcefulShutdown)
Perform an orderly shutdown, trying to wait for any currently running tasks to finish, or else forcefully shutdown the executor if the tasks are not able to finish their work within the given timeout duration. TheensureShutdown(String, ExecutorService, Duration)
method is preferred over this.- Parameters:
executor
- theExecutorService
to shut down.timeoutBeforeForcefulShutdown
- the maximum amount of time to wait for tasks to finish before forcefully shutting down the executor.
-
ensureShutdown
public static void ensureShutdown(String executorName, ExecutorService executor, Duration timeoutBeforeForcefulShutdown)
Perform an orderly shutdown, trying to wait for any currently running tasks to finish, or else forcefully shutdown the executor if the tasks are not able to finish their work within the given timeout duration.- Parameters:
executorName
- a descriptive name of the executor to shut down, used for logging.executor
- theExecutorService
to shut down.timeoutBeforeForcefulShutdown
- the maximum amount of time to wait for tasks to finish before forcefully shutting down the executor.
-
-