|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object![]()
![]()
![]()
java.util.concurrent.AbstractExecutorService
![]()
![]()
![]()
java.util.concurrent.ThreadPoolExecutor
![]()
![]()
![]()
java.util.concurrent.ScheduledThreadPoolExecutor
, ExecutorService
, ScheduledExecutorService

public class ScheduledThreadPoolExecutor


A ThreadPoolExecutor
that can additionally schedule
commands to run after a given delay, or to execute
periodically. This class is preferable to Timer
when multiple worker threads are needed, or when the additional
flexibility or capabilities of ThreadPoolExecutor
(which
this class extends) are required.
Delayed tasks execute no sooner than they are enabled, but without any real-time guarantees about when, after they are enabled, they will commence. Tasks scheduled for exactly the same execution time are enabled in first-in-first-out (FIFO) order of submission.
While this class inherits from ThreadPoolExecutor
, a few
of the inherited tuning methods are not useful for it. In
particular, because it acts as a fixed-sized pool using
corePoolSize threads and an unbounded queue, adjustments
to maximumPoolSize have no useful effect.
| Nested Class Summary |
|---|
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor ![]() |
|---|
ThreadPoolExecutor.AbortPolicy |
| Constructor Summary | |
|---|---|
ScheduledThreadPoolExecutor
Creates a new ScheduledThreadPoolExecutor with the given core pool size. |
|
ScheduledThreadPoolExecutor
Creates a new ScheduledThreadPoolExecutor with the given initial parameters. |
|
ScheduledThreadPoolExecutor
Creates a new ScheduledThreadPoolExecutor with the given initial parameters. |
|
ScheduledThreadPoolExecutor
Creates a new ScheduledThreadPoolExecutor with the given initial parameters. |
|
| Method Summary | ||
|---|---|---|
void |
execute
Execute command with zero required delay. |
|
boolean |
getContinueExistingPeriodicTasksAfterShutdownPolicy
Get the policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. |
|
boolean |
getExecuteExistingDelayedTasksAfterShutdownPolicy
Get policy on whether to execute existing delayed tasks even when this executor has been shutdown. |
|
BlockingQueue |
getQueue
Returns the task queue used by this executor. |
|
boolean |
remove
Removes this task from the executor's internal queue if it is present, thus causing it not to be run if it has not already started. |
|
|
schedule
Creates and executes a ScheduledFuture that becomes enabled after the given delay. |
|
ScheduledFuture |
schedule
Creates and executes a one-shot action that becomes enabled after the given delay. |
|
ScheduledFuture |
scheduleAtFixedRate
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. |
|
ScheduledFuture |
scheduleWithFixedDelay
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. |
|
void |
setContinueExistingPeriodicTasksAfterShutdownPolicy
Set policy on whether to continue executing existing periodic tasks even when this executor has been shutdown. |
|
void |
setExecuteExistingDelayedTasksAfterShutdownPolicy
Set policy on whether to execute existing delayed tasks even when this executor has been shutdown. |
|
void |
shutdown
Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. |
|
List |
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. |
|
|
submit
Submits a value-returning task for execution and returns a Future representing the pending results of the task. |
|
Future |
submit
Submits a Runnable task for execution and returns a Future representing that task. |
|
|
submit
Submits a Runnable task for execution and returns a Future representing that task that will upon completion return the given result |
|
Methods inherited from class java.util.concurrent.ThreadPoolExecutor ![]() |
|---|
afterExecute |
Methods inherited from class java.util.concurrent.AbstractExecutorService ![]() |
|---|
invokeAll |
Methods inherited from class java.lang.Object ![]() |
|---|
clone |
Methods inherited from interface java.util.concurrent.ExecutorService ![]() |
|---|
awaitTermination |
| Constructor Detail |
|---|

public ScheduledThreadPoolExecutor(int corePoolSize)
corePoolSize - the number of threads to keep in the pool,
even if they are idle.
IllegalArgumentException

- if corePoolSize less than or
equal to zero

public ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory
threadFactory)
corePoolSize - the number of threads to keep in the pool,
even if they are idle.threadFactory - the factory to use when the executor
creates a new thread.
NullPointerException

- if threadFactory is null

public ScheduledThreadPoolExecutor(int corePoolSize,
RejectedExecutionHandler
handler)
corePoolSize - the number of threads to keep in the pool,
even if they are idle.handler - the handler to use when execution is blocked
because the thread bounds and queue capacities are reached.
NullPointerException

- if handler is null

public ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory
threadFactory,
RejectedExecutionHandler
handler)
corePoolSize - the number of threads to keep in the pool,
even if they are idle.threadFactory - the factory to use when the executor
creates a new thread.handler - the handler to use when execution is blocked
because the thread bounds and queue capacities are reached.
NullPointerException

- if threadFactory or handler is null| Method Detail |
|---|

public boolean remove(Runnable![]()
![]()
task)
ThreadPoolExecutor

This method may be useful as one part of a cancellation
scheme. It may fail to remove tasks that have been converted
into other forms before being placed on the internal queue. For
example, a task entered using submit might be
converted into a form that maintains Future status.
However, in such cases, method ThreadPoolExecutor.purge()
may be used to remove those Futures that have been cancelled.
remove

in class ThreadPoolExecutor

task - the task to remove

public ScheduledFuture![]()
![]()
<?> schedule(Runnable
![]()
![]()
command, long delay, TimeUnit
![]()
![]()
unit)
ScheduledExecutorService

schedule

in interface ScheduledExecutorService

command - the task to execute.delay - the time from now to delay execution.unit - the time unit of the delay parameter.

public <V> ScheduledFuture![]()
![]()
<V> schedule(Callable
![]()
![]()
<V> callable, long delay, TimeUnit
![]()
![]()
unit)
ScheduledExecutorService

schedule

in interface ScheduledExecutorService

callable - the function to execute.delay - the time from now to delay execution.unit - the time unit of the delay parameter.

public ScheduledFuture![]()
![]()
<?> scheduleAtFixedRate(Runnable
![]()
![]()
command, long initialDelay, long period, TimeUnit
![]()
![]()
unit)
ScheduledExecutorService

scheduleAtFixedRate

in interface ScheduledExecutorService

command - the task to execute.initialDelay - the time to delay first execution.period - the period between successive executions.unit - the time unit of the initialDelay and period parameters

public ScheduledFuture![]()
![]()
<?> scheduleWithFixedDelay(Runnable
![]()
![]()
command, long initialDelay, long delay, TimeUnit
![]()
![]()
unit)
ScheduledExecutorService

scheduleWithFixedDelay

in interface ScheduledExecutorService

command - the task to execute.initialDelay - the time to delay first execution.delay - the delay between the termination of one
execution and the commencement of the next.unit - the time unit of the initialDelay and delay parameters

public void execute(Runnable![]()
![]()
command)
ScheduledFuture
, not the command itself.
execute

in interface Executor

execute

in class ThreadPoolExecutor

command - the task to execute
RejectedExecutionException

- at discretion of
RejectedExecutionHandler, if task cannot be accepted
for execution because the executor has been shut down.
NullPointerException

- if command is null

public Future![]()
![]()
<?> submit(Runnable
![]()
![]()
task)
ExecutorService

submit

in interface ExecutorService

submit

in class AbstractExecutorService

task - the task to submit

public <T> Future![]()
![]()
<T> submit(Runnable
![]()
![]()
task, T result)
ExecutorService

submit

in interface ExecutorService

submit

in class AbstractExecutorService

task - the task to submitresult - the result to return

public <T> Future![]()
![]()
<T> submit(Callable
![]()
![]()
<T> task)
ExecutorService

If you would like to immediately block waiting for a task, you can use constructions of the form result = exec.submit(aCallable).get();
Note: The Executors
class includes a set of methods
that can convert some other common closure-like objects,
for example, PrivilegedAction
to
Callable
form so they can be submitted.
submit

in interface ExecutorService

submit

in class AbstractExecutorService

task - the task to submit

public void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
value - if true, continue after shutdown, else don't.getExecuteExistingDelayedTasksAfterShutdownPolicy()


public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)


public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
value - if true, execute after shutdown, else don't.getExecuteExistingDelayedTasksAfterShutdownPolicy()


public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)


public void shutdown()
shutdown

in interface ExecutorService

shutdown

in class ThreadPoolExecutor


public List![]()
![]()
<Runnable
![]()
![]()
> shutdownNow()
There are no guarantees beyond best-effort attempts to stop
processing actively executing tasks. This implementation
cancels tasks via Thread.interrupt()
, so if any tasks mask or
fail to respond to interrupts, they may never terminate.
shutdownNow

in interface ExecutorService

shutdownNow

in class ThreadPoolExecutor

ScheduledFuture
,
including those tasks submitted using execute, which
are for scheduling purposes used as the basis of a zero-delay
ScheduledFuture.

public BlockingQueue![]()
![]()
<Runnable
![]()
![]()
> getQueue()
ScheduledFuture
, including those
tasks submitted using execute which are for scheduling
purposes used as the basis of a zero-delay
ScheduledFuture. Iteration over this queue is
not guaranteed to traverse tasks in the order in
which they will execute.
getQueue

in class ThreadPoolExecutor

|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||