Package org.infinispan.executors
Class LimitedExecutor
- java.lang.Object
-
- org.infinispan.executors.LimitedExecutor
-
- All Implemented Interfaces:
Executor
public class LimitedExecutor extends Object implements Executor
Executes tasks in the given executor, but never has more thanmaxConcurrentTasks
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 theCompletableFuture
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
Constructors Constructor Description LimitedExecutor(String name, Executor executor, int maxConcurrentTasks)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
execute(Runnable command)
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
shutdownNow()
Stops the executor and cancels any queued tasks.
-
-
-
Method Detail
-
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.
-
executeAsync
public 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.- Parameters:
asyncCommand
- A task that returns a non-nullCompletionStage
, which may be already completed or may complete at some point in the future.
-
-