java.util.concurrent.ScheduledThreadPoolExecutor is a subclass of ThreadPoolExecutor and can additionally schedule commands to run after a given delay, or to execute periodically.
ScheduledThreadPoolExecutor Methods
Sr.No. | Method & Description |
---|---|
1 |
protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
Modifies or replaces the task used to execute a callable.
|
2 |
protected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
Modifies or replaces the task used to execute a runnable.
|
3 |
void execute(Runnable command)
Executes command with zero required delay.
|
4 |
boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
Gets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown.
|
5 |
boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
Gets the policy on whether to execute existing delayed tasks even when this executor has been shutdown.
|
6 |
BlockingQueue<Runnable> getQueue()
Returns the task queue used by this executor.
|
7 |
boolean getRemoveOnCancelPolicy()
Gets the policy on whether cancelled tasks should be immediately removed from the work queue at time of cancellation.
|
8 |
<V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
Creates and executes a ScheduledFuture that becomes enabled after the given delay.
|
9 |
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
Creates and executes a one-shot action that becomes enabled after the given delay.
|
10 |
ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
Creates and executes a periodic action that becomes enabled first after the given initial delay, and subsequently with the given period; that is executions will commence after initialDelay then initialDelay+period, then initialDelay + 2 * period, and so on.
|
11 |
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
Creates and executes a periodic action that becomes enabled first after the given initial delay, and subsequently with the given delay between the termination of one execution and the commencement of the next.
|
12 |
void setContinueExistingPeriodicTasksAfterShutdownPolicy (boolean value)
Sets the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown.
|
13 |
void setExecuteExistingDelayedTasksAfterShutdownPolicy (boolean value)
Sets the policy on whether to execute existing delayed tasks even when this executor has been shutdown.
|
14 |
void setRemoveOnCancelPolicy(boolean value)
Sets the policy on whether cancelled tasks should be immediately removed from the work queue at time of cancellation.
|
15 |
void shutdown()
Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted.
|
16 |
List<Runnable> shutdownNow()
Attempts to stop all actively executing tasks, halts the processing of waiting tasks, and returns a list of the tasks that were awaiting execution.
|
17 |
<T> Future<T> submit(Callable<T> task)
Submits a value-returning task for execution and returns a Future representing the pending results of the task.
|
18 |
Future<?> submit(Runnable task)
Submits a Runnable task for execution and returns a Future representing that task.
|
19 |
<T> Future<T> submit(Runnable task, T result)
Submits a Runnable task for execution and returns a Future representing that task.
|
Example
The following TestThread program shows usage of ScheduledThreadPoolExecutor interface in thread based environment.
Live Demoimport java.util.concurrent.Executors; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; public class TestThread { public static void main(final String[] arguments) throws InterruptedException { final ScheduledThreadPoolExecutor scheduler = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1); final ScheduledFuture<?> beepHandler = scheduler.scheduleAtFixedRate(new BeepTask(), 2, 2, TimeUnit.SECONDS); scheduler.schedule(new Runnable() { @Override public void run() { beepHandler.cancel(true); scheduler.shutdown(); } }, 10, TimeUnit.SECONDS); } static class BeepTask implements Runnable { public void run() { System.out.println("beep"); } } }
This will produce the following result.
Output
beep beep beep beep
No comments:
Post a Comment