All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.threadly.concurrent.SchedulerService Maven / Gradle / Ivy

package org.threadly.concurrent;

import java.util.concurrent.Callable;

/**
 * This interface adds some more advanced features to a scheduler that are more service oriented.  
 * Things like a concept of running/shutdown, as well as removing tasks are not always easy to 
 * implement.
 * 
 * @since 4.3.0 (since 2.0.0 as SchedulerServiceInterface)
 */
public interface SchedulerService extends SubmitterScheduler {
  /**
   * Removes the runnable task from the execution queue.  It is possible for the runnable to still 
   * run until this call has returned.
   * 

* Note that this call has high guarantees on the ability to remove the task (as in a complete * guarantee). But while this is being invoked, it will reduce the throughput of execution, so * should NOT be used extremely frequently. *

* For non-recurring tasks using a future and calling * {@link java.util.concurrent.Future#cancel(boolean)} can be a better solution. * * @param task The original runnable provided to the executor * @return {@code true} if the runnable was found and removed */ public boolean remove(Runnable task); /** * Removes the callable task from the execution queue. It is possible for the callable to still * run until this call has returned. *

* Note that this call has high guarantees on the ability to remove the task (as in a complete * guarantee). But while this is being invoked, it will reduce the throughput of execution, so * should NOT be used extremely frequently. *

* For non-recurring tasks using a future and calling * {@link java.util.concurrent.Future#cancel(boolean)} can be a better solution. * * @param task The original callable provided to the executor * @return {@code true} if the callable was found and removed */ public boolean remove(Callable task); /** * Call to check how many tasks are currently being executed in this scheduler. * * @return current number of running tasks */ public int getActiveTaskCount(); /** * Returns how many tasks are either waiting to be executed, or are scheduled to be executed at * a future point. This can indicate pool back pressure, but it can also just indicate generally * scheduled tasks. It's computationally cheaper than {@link #getWaitingForExecutionTaskCount()}. * * @return quantity of tasks waiting execution or scheduled to be executed later */ public int getQueuedTaskCount(); /** * Returns how many tasks are either waiting to be executed. A value here can indicate the pool * is being starved for threads. * * @return quantity of tasks waiting execution */ public int getWaitingForExecutionTaskCount(); /** * Function to check if the thread pool is currently accepting and handling tasks. * * @return {@code true} if thread pool is running */ public boolean isShutdown(); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy