Package org.infinispan.executors
Class LimitedExecutor
java.lang.Object
org.infinispan.executors.LimitedExecutor
- All Implemented Interfaces:
Executor
Executes tasks in the given executor, but never has more than
maxConcurrentTasks
tasks running at the same
time.
A task can finish running without allowing another task to run in its stead, with executeAsync(Supplier)
.
A new task will only start after the CompletableFuture
returned by the task has completed.
Blocking mode. If the executor is a WithinThreadExecutor
, tasks will run in the thread that
submitted them. If there are no available permits, the caller thread will block until a permit becomes available.
- Since:
- 9.0
- Author:
- Dan Berindei
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
void
executeAsync
(Supplier<CompletionStage<Void>> asyncCommand) Similar toexecute(Runnable)
, but the task can continue executing asynchronously, without blocking the OS thread, while still counting against this executor's limit.void
Stops the executor and cancels any queued tasks.
-
Constructor Details
-
LimitedExecutor
-
-
Method Details
-
shutdownNow
public void shutdownNow()Stops the executor and cancels any queued tasks. Stop and interrupt any tasks that have already been handed to the underlying executor. -
execute
-
executeAsync
Similar toexecute(Runnable)
, but the task can continue executing asynchronously, without blocking the OS thread, while still counting against this executor's limit.- Parameters:
asyncCommand
- A task that returns a non-nullCompletionStage
, which may be already completed or may complete at some point in the future.
-