public static interface Schedulers.Factory
Modifier and Type | Method and Description |
---|---|
default Scheduler |
newBoundedElastic(int threadCap,
int queuedTaskCap,
ThreadFactory threadFactory,
int ttlSeconds)
Scheduler that dynamically creates a bounded number of ExecutorService-based
Workers, reusing them once the Workers have been shut down. |
default Scheduler |
newParallel(int parallelism,
ThreadFactory threadFactory)
Scheduler that hosts a fixed pool of workers and is suited for parallel
work. |
default Scheduler |
newSingle(ThreadFactory threadFactory)
Scheduler that hosts a single worker and is suited for non-blocking
work. |
default Scheduler |
newThreadPerTaskBoundedElastic(int threadCap,
int queuedTaskCap,
ThreadFactory threadFactory)
Scheduler that dynamically creates a bounded number of Workers. |
default Scheduler newBoundedElastic(int threadCap, int queuedTaskCap, ThreadFactory threadFactory, int ttlSeconds)
Scheduler
that dynamically creates a bounded number of ExecutorService-based
Workers, reusing them once the Workers have been shut down. The underlying (user or daemon)
threads can be evicted if idle for more than ttlSeconds
.
The maximum number of created thread pools is bounded by the provided threadCap
.
threadCap
- maximum number of underlying threads to createqueuedTaskCap
- maximum number of tasks to enqueue when no more threads can be created. Can be Integer.MAX_VALUE
for unbounded enqueueing.threadFactory
- a ThreadFactory
to use each thread initializationttlSeconds
- Time-to-live for an idle Scheduler.Worker
Scheduler
that dynamically creates workers with an upper bound to
the number of backing threads, reuses threads and evict idle onesdefault Scheduler newThreadPerTaskBoundedElastic(int threadCap, int queuedTaskCap, ThreadFactory threadFactory)
Scheduler
that dynamically creates a bounded number of Workers.
The maximum number of created thread pools is bounded by the provided threadCap
.
The main difference between BoundedElasticScheduler
and
BoundedElasticThreadPerTaskScheduler
is that underlying machinery
allocates a new thread for every new task which is one of the requirements
for usage with VirtualThread
s
Note: for now this scheduler is available only in Java 21+ runtime
threadCap
- maximum number of underlying threads to createqueuedTaskCap
- maximum number of tasks to enqueue when no more threads can be created. Can be Integer.MAX_VALUE
for unbounded enqueueing.threadFactory
- a ThreadFactory
to use each thread initializationScheduler
that dynamically creates workers with an upper bound to
the number of backing threadsdefault Scheduler newParallel(int parallelism, ThreadFactory threadFactory)
Scheduler
that hosts a fixed pool of workers and is suited for parallel
work.parallelism
- Number of pooled workers.threadFactory
- a ThreadFactory
to use for the fixed initialized
number of Thread
Scheduler
that hosts a fixed pool of workers and is
suited for parallel workdefault Scheduler newSingle(ThreadFactory threadFactory)
Scheduler
that hosts a single worker and is suited for non-blocking
work.threadFactory
- a ThreadFactory
to use for the unique resource of
the Scheduler
Scheduler
that hosts a single worker