Class ExecutorFactoryCassandraSEPImpl
- java.lang.Object
-
- org.opennms.core.concurrent.cassandra.ExecutorFactoryCassandraSEPImpl
-
- All Implemented Interfaces:
ExecutorFactory
public class ExecutorFactoryCassandraSEPImpl extends java.lang.Object implements ExecutorFactory
ThisExecutorFactory
returnsExecutorService
instances that are implemented with Cassandra's high performance, low-context-switchingSharedExecutorPool
.
-
-
Field Summary
Fields Modifier and Type Field Description static org.apache.cassandra.concurrent.JMXEnabledSharedExecutorPool
SHARED
Create a shared executor pool for all of the threads used in this class TODO: Make this into a map of separate pools per daemon?
-
Constructor Summary
Constructors Constructor Description ExecutorFactoryCassandraSEPImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.ExecutorService
newExecutor(int threads, int queueSize, java.lang.String daemonName, java.lang.String executorName)
Construct a newExecutorService
with a specified queue size for the backlog of tasks.java.util.concurrent.ExecutorService
newExecutor(int threads, java.lang.String daemonName, java.lang.String executorName)
Construct a newExecutorService
with an unbounded queue size ({@link Integer#MAX_VALUE). For CPU-intensive tasks, it is a good idea to use the value of {@link Runtime#availableProcessors()} (or a reasonable multiple of it based on the tasks) for thethreads
parameter to ensure that the CPU is fully utilized.java.util.concurrent.ExecutorService
newExecutor(java.lang.String daemonName, java.lang.String executorName)
Construct a newExecutorService
with an unbounded queue size and a thread pool size equal to the value ofRuntime.availableProcessors()
so that one thread per core is started.
-
-
-
Method Detail
-
newExecutor
public java.util.concurrent.ExecutorService newExecutor(java.lang.String daemonName, java.lang.String executorName)
Description copied from interface:ExecutorFactory
Construct a newExecutorService
with an unbounded queue size and a thread pool size equal to the value ofRuntime.availableProcessors()
so that one thread per core is started.- Specified by:
newExecutor
in interfaceExecutorFactory
- Returns:
-
newExecutor
public java.util.concurrent.ExecutorService newExecutor(int threads, java.lang.String daemonName, java.lang.String executorName)
Description copied from interface:ExecutorFactory
Construct a newExecutorService
with an unbounded queue size ({@link Integer#MAX_VALUE). For CPU-intensive tasks, it is a good idea to use the value of {@link Runtime#availableProcessors()} (or a reasonable multiple of it based on the tasks) for thethreads
parameter to ensure that the CPU is fully utilized.- Specified by:
newExecutor
in interfaceExecutorFactory
- Returns:
- An ExecutorService pool
-
newExecutor
public java.util.concurrent.ExecutorService newExecutor(int threads, int queueSize, java.lang.String daemonName, java.lang.String executorName)
Description copied from interface:ExecutorFactory
Construct a newExecutorService
with a specified queue size for the backlog of tasks. When the queue is full, the pool may block, discard the incoming task, or throw an exception. This behavior is dependent on the implementation of theExecutorService
. For CPU-intensive tasks, it is a good idea to use the value ofRuntime.availableProcessors()
(or a reasonable multiple of it based on the tasks) for thethreads
parameter to ensure that the CPU is fully utilized.- Specified by:
newExecutor
in interfaceExecutorFactory
- Returns:
- An ExecutorService pool
-
-