Class SEPExecutor

java.lang.Object
org.apache.cassandra.concurrent.SEPExecutor
All Implemented Interfaces:
Executor, ExecutorService, ExecutorPlus, LocalAwareExecutorPlus, ResizableThreadPool, SEPExecutorMBean

public class SEPExecutor extends Object implements LocalAwareExecutorPlus, SEPExecutorMBean
  • Field Details

  • Method Details

    • onCompletion

      protected void onCompletion()
    • oldestTaskQueueTime

      public long oldestTaskQueueTime()
      Specified by:
      oldestTaskQueueTime in interface ResizableThreadPool
    • getMaxTasksQueued

      public int getMaxTasksQueued()
      Specified by:
      getMaxTasksQueued in interface ResizableThreadPool
    • addTask

      protected <T extends Runnable> T addTask(T task)
    • maybeExecuteImmediately

      public void maybeExecuteImmediately(Runnable task)
      Description copied from interface: ExecutorPlus
      MAY execute task immediately, if the calling thread is permitted to do so.
      Specified by:
      maybeExecuteImmediately in interface ExecutorPlus
    • execute

      public void execute(Runnable run)
      Specified by:
      execute in interface Executor
    • execute

      public void execute(WithResources withResources, Runnable run)
      Description copied from interface: ExecutorPlus
      Invoke task. The invoking thread will first instantiate the resources provided before invoking task, so that thread state may be modified and cleaned up. The invoking thread will execute something semantically equivlent to: try (Closeable close = withResources.get()) { task.run(); }
      Specified by:
      execute in interface ExecutorPlus
      Parameters:
      withResources - the resources to create and hold while executing task
      run - the task to execute
    • submit

      public Future<?> submit(Runnable run)
      Description copied from interface: ExecutorPlus
      Overrides ExecutorService.submit(Runnable) to return a Cassandra Future
      Specified by:
      submit in interface ExecutorPlus
      Specified by:
      submit in interface ExecutorService
    • submit

      public <T> Future<T> submit(Runnable run, T result)
      Description copied from interface: ExecutorPlus
      Overrides ExecutorService.submit(Runnable, Object) to return a Cassandra Future
      Specified by:
      submit in interface ExecutorPlus
      Specified by:
      submit in interface ExecutorService
    • submit

      public <T> Future<T> submit(Callable<T> call)
      Description copied from interface: ExecutorPlus
      Overrides ExecutorService.submit(Callable) to return a Cassandra Future
      Specified by:
      submit in interface ExecutorPlus
      Specified by:
      submit in interface ExecutorService
    • submit

      public <T> Future<T> submit(WithResources withResources, Runnable run, T result)
      Description copied from interface: ExecutorPlus
      Invoke task, returning a future yielding result if successful, or the abnormal termination of task otherwise. The invoking thread will first instantiate the resources provided before invoking task, so that thread state may be modified and cleaned up. The invoking thread will execute something semantically equivlent to: try (Closeable close = withResources.get()) { task.run(); return result; }
      Specified by:
      submit in interface ExecutorPlus
      Parameters:
      withResources - the resources to create and hold while executing task
      run - the task to execute
      result - the result if successful
    • submit

      public Future<?> submit(WithResources withResources, Runnable run)
      Description copied from interface: ExecutorPlus
      Invoke task, returning a future yielding null if successful, or the abnormal termination of task otherwise. The invoking thread will first instantiate the resources provided before invoking task, so that thread state may be modified and cleaned up try (Closeable close = withResources.get()) { task.run(); return null; }
      Specified by:
      submit in interface ExecutorPlus
      Parameters:
      withResources - the resources to create and hold while executing task
      run - the task to execute
    • submit

      public <T> Future<T> submit(WithResources withResources, Callable<T> call)
      Description copied from interface: ExecutorPlus
      Invoke task, returning a future representing this computation. The invoking thread will first instantiate the resources provided before invoking task, so that thread state may be modified and cleaned up. The invoking thread will execute something semantically equivlent to: try (Closeable close = withResources.get()) { return task.call(); }
      Specified by:
      submit in interface ExecutorPlus
      Parameters:
      withResources - the resources to create and hold while executing task
      call - the task to execute
    • inExecutor

      public boolean inExecutor()
      Specified by:
      inExecutor in interface ExecutorPlus
      Returns:
      true iff the caller is a worker thread actively serving this executor
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface ExecutorService
    • shutdownNow

      public List<Runnable> shutdownNow()
      Specified by:
      shutdownNow in interface ExecutorService
    • isShutdown

      public boolean isShutdown()
      Specified by:
      isShutdown in interface ExecutorService
    • isTerminated

      public boolean isTerminated()
      Specified by:
      isTerminated in interface ExecutorService
    • awaitTermination

      public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
      Specified by:
      awaitTermination in interface ExecutorService
      Throws:
      InterruptedException
    • getPendingTaskCount

      public int getPendingTaskCount()
      Description copied from interface: ResizableThreadPool
      Returns the approximate total of tasks waiting to be executed. Because the states of tasks and threads may change dynamically during computation, the returned value is only an approximation.
      Specified by:
      getPendingTaskCount in interface ResizableThreadPool
      Returns:
      the number of tasks
    • getCompletedTaskCount

      public long getCompletedTaskCount()
      Description copied from interface: ResizableThreadPool
      Returns the approximate total number of tasks that have completed execution. Because the states of tasks and threads may change dynamically during computation, the returned value is only an approximation, but one that does not ever decrease across successive calls.
      Specified by:
      getCompletedTaskCount in interface ResizableThreadPool
      Returns:
      the number of tasks
    • getActiveTaskCount

      public int getActiveTaskCount()
      Description copied from interface: ResizableThreadPool
      Returns the approximate number of threads that are actively executing tasks.
      Specified by:
      getActiveTaskCount in interface ResizableThreadPool
      Returns:
      the number of threads
    • getCorePoolSize

      public int getCorePoolSize()
      Description copied from interface: ResizableThreadPool
      Returns core pool size of thread pool, the minimum number of workers (where that makes sense for a thread pool, SEPExecutor does not have a minimum size).
      Specified by:
      getCorePoolSize in interface ResizableThreadPool
    • setCorePoolSize

      public void setCorePoolSize(int newCorePoolSize)
      Description copied from interface: ResizableThreadPool
      Allows user to resize minimum size of the thread pool.
      Specified by:
      setCorePoolSize in interface ResizableThreadPool
    • getMaximumPoolSize

      public int getMaximumPoolSize()
      Description copied from interface: ResizableThreadPool
      Returns maximum pool size of thread pool.
      Specified by:
      getMaximumPoolSize in interface ResizableThreadPool
    • setMaximumPoolSize

      public void setMaximumPoolSize(int newMaximumPoolSize)
      Description copied from interface: ResizableThreadPool
      Allows user to resize maximum size of the thread pool.
      Specified by:
      setMaximumPoolSize in interface ResizableThreadPool