ScheduledThreadPoolExecutor (Java SE 9 JDK 9 )()

  本篇文章为你整理了ScheduledThreadPoolExecutor (Java SE 9 & JDK 9 )()的详细内容,包含有 ScheduledThreadPoolExecutor (Java SE 9 & JDK 9 ),希望能帮助你了解 ScheduledThreadPoolExecutor (Java SE 9 & JDK 9 )。

  

public class ScheduledThreadPoolExecutor

 

  extends ThreadPoolExecutor

  implements ScheduledExecutorService

 

  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.

   When a submitted task is cancelled before it is run, execution

   is suppressed. By default, such a cancelled task is not

   automatically removed from the work queue until its delay elapses.

   While this enables further inspection and monitoring, it may also

   cause unbounded retention of cancelled tasks. To avoid this, use

   setRemoveOnCancelPolicy(boolean) to cause tasks to be immediately

   removed from the work queue at time of cancellation.

   Successive executions of a periodic task scheduled via

   scheduleAtFixedRate or

   scheduleWithFixedDelay

   do not overlap. While different executions may be performed by

   different threads, the effects of prior executions

   happen-before

   those of subsequent ones.

   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. Additionally, it

   is almost never a good idea to set corePoolSize to zero or

   use allowCoreThreadTimeOut because this may leave the pool

   without threads to handle tasks once they become eligible to run.

   Extension notes: This class overrides the

   execute and

   submit

   methods to generate internal ScheduledFuture objects to

   control per-task delays and scheduling. To preserve

   functionality, any further overrides of these methods in

   subclasses must invoke superclass versions, which effectively

   disables additional task customization. However, this class

   provides alternative protected extension method

   decorateTask (one version each for Runnable and

   Callable) that can be used to customize the concrete task

   types used to execute commands entered via execute,

   submit, schedule, scheduleAtFixedRate,

   and scheduleWithFixedDelay. By default, a

   ScheduledThreadPoolExecutor uses a task type extending

   FutureTask. However, this may be modified or replaced using

   subclasses of the form:

  

 

 

   public class CustomScheduledExecutor extends ScheduledThreadPoolExecutor {

   static class CustomTask V implements RunnableScheduledFuture V { ... }

   protected V RunnableScheduledFuture V decorateTask(

   Runnable r, RunnableScheduledFuture V task) {

   return new CustomTask V (r, task);

   protected V RunnableScheduledFuture V decorateTask(

   Callable V c, RunnableScheduledFuture V task) {

   return new CustomTask V (c, task);

   // ... add constructors, etc.

   }

 

  Since:

  
ScheduledThreadPoolExecutor (intcorePoolSize)

  Creates a new ScheduledThreadPoolExecutor with the

   given core pool size.

  
boolean

  getContinueExistingPeriodicTasksAfterShutdownPolicy ()

  Gets the policy on whether to continue executing existing

   periodic tasks even when this executor has been shutdown.

  
boolean

  getExecuteExistingDelayedTasksAfterShutdownPolicy ()

  Gets the policy on whether to execute existing delayed

   tasks even when this executor has been shutdown.

  
boolean

  getRemoveOnCancelPolicy ()

  Gets the policy on whether cancelled tasks should be immediately

   removed from the work queue at time of cancellation.

  
ScheduledFuture ?

  scheduleAtFixedRate (Runnablecommand,

   longinitialDelay,

   longperiod,

   TimeUnitunit)

  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 (Runnablecommand,

   longinitialDelay,

   longdelay,

   TimeUnitunit)

  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.

  
setContinueExistingPeriodicTasksAfterShutdownPolicy (booleanvalue)

  Sets the policy on whether to continue executing existing

   periodic tasks even when this executor has been shutdown.

  
setExecuteExistingDelayedTasksAfterShutdownPolicy (booleanvalue)

  Sets the policy on whether to execute existing delayed

   tasks even when this executor has been shutdown.

  
setRemoveOnCancelPolicy (booleanvalue)

  Sets the policy on whether cancelled tasks should be immediately

   removed from the work queue at time of cancellation.

  
shutdown ()

  Initiates an orderly shutdown in which previously submitted

   tasks are executed, but no new tasks will be accepted.

  
ScheduledThreadPoolExecutor

  

publicScheduledThreadPoolExecutor (intcorePoolSize)

 

  Creates a new ScheduledThreadPoolExecutor with the

   given core pool size.

  Parameters:

  corePoolSize - the number of threads to keep in the pool, even

   if they are idle, unless allowCoreThreadTimeOut is set

  Throws:

  IllegalArgumentException - if corePoolSize 0

  
ScheduledThreadPoolExecutor

  

publicScheduledThreadPoolExecutor (intcorePoolSize,

 

   ThreadFactorythreadFactory)

 

  Creates a new ScheduledThreadPoolExecutor with the

   given initial parameters.

  Parameters:

  corePoolSize - the number of threads to keep in the pool, even

   if they are idle, unless allowCoreThreadTimeOut is set

  threadFactory - the factory to use when the executor

   creates a new thread

  Throws:

  IllegalArgumentException - if corePoolSize 0

  NullPointerException - if threadFactory is null

  
ScheduledThreadPoolExecutor

  

publicScheduledThreadPoolExecutor (intcorePoolSize,

 

   RejectedExecutionHandlerhandler)

 

  Creates a new ScheduledThreadPoolExecutor with the

   given initial parameters.

  Parameters:

  corePoolSize - the number of threads to keep in the pool, even

   if they are idle, unless allowCoreThreadTimeOut is set

  handler - the handler to use when execution is blocked

   because the thread bounds and queue capacities are reached

  Throws:

  IllegalArgumentException - if corePoolSize 0

  NullPointerException - if handler is null

  
ScheduledThreadPoolExecutor

  

publicScheduledThreadPoolExecutor (intcorePoolSize,

 

   ThreadFactorythreadFactory,

   RejectedExecutionHandlerhandler)

 

  Creates a new ScheduledThreadPoolExecutor with the

   given initial parameters.

  Parameters:

  corePoolSize - the number of threads to keep in the pool, even

   if they are idle, unless allowCoreThreadTimeOut is set

  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

  Throws:

  IllegalArgumentException - if corePoolSize 0

  NullPointerException - if threadFactory or

   handler is null

  
decorateTask

  

protected V RunnableScheduledFuture V decorateTask (Runnablerunnable,

 

   RunnableScheduledFuture V task)

 

  Modifies or replaces the task used to execute a runnable.

   This method can be used to override the concrete

   class used for managing internal tasks.

   The default implementation simply returns the given task.

  Type Parameters:

  V - the type of the tasks result

  Parameters:

  runnable - the submitted Runnable

  task - the task created to execute the runnable

  Returns:

  a task that can execute the runnable

  Since:

  
decorateTask

  

protected V RunnableScheduledFuture V decorateTask (Callable V callable,

 

   RunnableScheduledFuture V task)

 

  Modifies or replaces the task used to execute a callable.

   This method can be used to override the concrete

   class used for managing internal tasks.

   The default implementation simply returns the given task.

  Type Parameters:

  V - the type of the tasks result

  Parameters:

  callable - the submitted Callable

  task - the task created to execute the callable

  Returns:

  a task that can execute the callable

  Since:

  
schedule

  

publicScheduledFuture ? schedule (Runnablecommand,

 

   longdelay,

   TimeUnitunit)

 

  Description copied from interface:ScheduledExecutorService

  Creates and executes a one-shot action that becomes enabled

   after the given delay.

  Specified by:

  schedulein interfaceScheduledExecutorService

  Parameters:

  command - the task to execute

  delay - the time from now to delay execution

  unit - the time unit of the delay parameter

  Returns:

  a ScheduledFuture representing pending completion of

   the task and whose get() method will return

   null upon completion

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if command is null

  
schedule

  

public V ScheduledFuture V schedule (Callable V callable,

 

   longdelay,

   TimeUnitunit)

 

  Description copied from interface:ScheduledExecutorService

  Creates and executes a ScheduledFuture that becomes enabled after the

   given delay.

  Specified by:

  schedulein interfaceScheduledExecutorService

  Type Parameters:

  V - the type of the callables result

  Parameters:

  callable - the function to execute

  delay - the time from now to delay execution

  unit - the time unit of the delay parameter

  Returns:

  a ScheduledFuture that can be used to extract result or cancel

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if callable is null

  
scheduleAtFixedRate

  

publicScheduledFuture ? scheduleAtFixedRate (Runnablecommand,

 

   longinitialDelay,

   longperiod,

   TimeUnitunit)

 

  Description copied from interface:ScheduledExecutorService

  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.

   The sequence of task executions continues indefinitely until

   one of the following exceptional completions occur:

   The task is explicitly cancelled

   via the returned future.

   The executor terminates, also resulting in task cancellation.

   An execution of the task throws an exception. In this case

   calling get on the returned future will

   throw ExecutionException.

   Subsequent executions are suppressed. Subsequent calls to

   isDone() on the returned future will

   return true.

   If any execution of this task takes longer than its period, then

   subsequent executions may start late, but will not concurrently

   execute.

  Specified by:

  scheduleAtFixedRatein interfaceScheduledExecutorService

  Parameters:

  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

  Returns:

  a ScheduledFuture representing pending completion of

   the series of repeated tasks. The futures get() method will never return normally,

   and will throw an exception upon task cancellation or

   abnormal termination of a task execution.

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if command is null

  IllegalArgumentException - if period less than or equal to zero

  
scheduleWithFixedDelay

  

publicScheduledFuture ? scheduleWithFixedDelay (Runnablecommand,

 

   longinitialDelay,

   longdelay,

   TimeUnitunit)

 

  Description copied from interface:ScheduledExecutorService

  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.

   The sequence of task executions continues indefinitely until

   one of the following exceptional completions occur:

   The task is explicitly cancelled

   via the returned future.

   The executor terminates, also resulting in task cancellation.

   An execution of the task throws an exception. In this case

   calling get on the returned future will

   throw ExecutionException.

   Subsequent executions are suppressed. Subsequent calls to

   isDone() on the returned future will

   return true.

  Specified by:

  scheduleWithFixedDelayin interfaceScheduledExecutorService

  Parameters:

  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

  Returns:

  a ScheduledFuture representing pending completion of

   the series of repeated tasks. The futures get() method will never return normally,

   and will throw an exception upon task cancellation or

   abnormal termination of a task execution.

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if command is null

  IllegalArgumentException - if delay less than or equal to zero

  
execute

  

publicvoidexecute (Runnablecommand)

 

  Executes command with zero required delay.

   This has effect equivalent to

   schedule(command, 0, anyUnit).

   Note that inspections of the queue and of the list returned by

   shutdownNow will access the zero-delayed

   ScheduledFuture, not the command itself.

   A consequence of the use of ScheduledFuture objects is

   that afterExecute is always

   called with a null second Throwable argument, even if the

   command terminated abruptly. Instead, the Throwable

   thrown by such a task can be obtained via Future.get().

  Specified by:

  executein interfaceExecutor

  Overrides:

  executein classThreadPoolExecutor

  Parameters:

  command - the task to execute

  Throws:

  RejectedExecutionException - at discretion of

   RejectedExecutionHandler, if the task

   cannot be accepted for execution because the

   executor has been shut down

  NullPointerException - if command is null

  
submit

  

publicFuture ? submit (Runnabletask)

 

  Description copied from interface:ExecutorService

  Submits a Runnable task for execution and returns a Future

   representing that task. The Futures get method will

   return null upon successful completion.

  Specified by:

  submitin interfaceExecutorService

  Overrides:

  submitin classAbstractExecutorService

  Parameters:

  task - the task to submit

  Returns:

  a Future representing pending completion of the task

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if the task is null

  
submit

  

public T Future T submit (Runnabletask,

 

   Tresult)

 

  Description copied from interface:ExecutorService

  Submits a Runnable task for execution and returns a Future

   representing that task. The Futures get method will

   return the given result upon successful completion.

  Specified by:

  submitin interfaceExecutorService

  Overrides:

  submitin classAbstractExecutorService

  Type Parameters:

  T - the type of the result

  Parameters:

  task - the task to submit

  result - the result to return

  Returns:

  a Future representing pending completion of the task

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if the task is null

  
submit

  

public T Future T submit (Callable T task)

 

  Description copied from interface:ExecutorService

  Submits a value-returning task for execution and returns a

   Future representing the pending results of the task. The

   Futures get method will return the tasks result upon

   successful completion.

   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.

  Specified by:

  submitin interfaceExecutorService

  Overrides:

  submitin classAbstractExecutorService

  Type Parameters:

  T - the type of the tasks result

  Parameters:

  task - the task to submit

  Returns:

  a Future representing pending completion of the task

  Throws:

  RejectedExecutionException - if the task cannot be

   scheduled for execution

  NullPointerException - if the task is null

  
setContinueExistingPeriodicTasksAfterShutdownPolicy

  

publicvoidsetContinueExistingPeriodicTasksAfterShutdownPolicy (booleanvalue)

 

  Sets the policy on whether to continue executing existing

   periodic tasks even when this executor has been shutdown.

   In this case, these tasks will only terminate upon

   shutdownNow or after setting the policy to

   false when already shutdown.

   This value is by default false.

  Parameters:

  value - if true, continue after shutdown, else dont

  See Also:

  getContinueExistingPeriodicTasksAfterShutdownPolicy()

  
getContinueExistingPeriodicTasksAfterShutdownPolicy

  

publicbooleangetContinueExistingPeriodicTasksAfterShutdownPolicy ()

 

  Gets the policy on whether to continue executing existing

   periodic tasks even when this executor has been shutdown.

   In this case, these tasks will only terminate upon

   shutdownNow or after setting the policy to

   false when already shutdown.

   This value is by default false.

  Returns:

  true if will continue after shutdown

  See Also:

  setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)

  
setExecuteExistingDelayedTasksAfterShutdownPolicy

  

publicvoidsetExecuteExistingDelayedTasksAfterShutdownPolicy (booleanvalue)

 

  Sets the policy on whether to execute existing delayed

   tasks even when this executor has been shutdown.

   In this case, these tasks will only terminate upon

   shutdownNow, or after setting the policy to

   false when already shutdown.

   This value is by default true.

  Parameters:

  value - if true, execute after shutdown, else dont

  See Also:

  getExecuteExistingDelayedTasksAfterShutdownPolicy()

  
getExecuteExistingDelayedTasksAfterShutdownPolicy

  

publicbooleangetExecuteExistingDelayedTasksAfterShutdownPolicy ()

 

  Gets the policy on whether to execute existing delayed

   tasks even when this executor has been shutdown.

   In this case, these tasks will only terminate upon

   shutdownNow, or after setting the policy to

   false when already shutdown.

   This value is by default true.

  Returns:

  true if will execute after shutdown

  See Also:

  setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)

  
setRemoveOnCancelPolicy

  

publicvoidsetRemoveOnCancelPolicy (booleanvalue)

 

  Sets the policy on whether cancelled tasks should be immediately

   removed from the work queue at time of cancellation. This value is

   by default false.

  Parameters:

  value - if true, remove on cancellation, else dont

  Since:

  See Also:

  getRemoveOnCancelPolicy()

  


publicbooleangetRemoveOnCancelPolicy ()

 

  Gets the policy on whether cancelled tasks should be immediately

   removed from the work queue at time of cancellation. This value is

   by default false.

  Returns:

  true if cancelled tasks are immediately removed

   from the queue

  Since:

  See Also:

  setRemoveOnCancelPolicy(boolean)

  


publicvoidshutdown ()

 

  Initiates an orderly shutdown in which previously submitted

   tasks are executed, but no new tasks will be accepted.

   Invocation has no additional effect if already shut down.

   This method does not wait for previously submitted tasks to

   complete execution. Use awaitTermination

   to do that.

   If the ExecuteExistingDelayedTasksAfterShutdownPolicy

   has been set false, existing delayed tasks whose delays

   have not yet elapsed are cancelled. And unless the

   ContinueExistingPeriodicTasksAfterShutdownPolicy has been set

   true, future executions of existing periodic tasks will

   be cancelled.

  Specified by:

  shutdownin interfaceExecutorService

  Overrides:

  shutdownin classThreadPoolExecutor

  Throws:

  SecurityException - if a security manager exists and

   shutting down this ExecutorService may manipulate

   threads that the caller is not permitted to modify

   because it does not hold RuntimePermission("modifyThread"),

   or the security managers checkAccess method

   denies access.

  
shutdownNow

  

publicList 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. These tasks are drained (removed)

   from the task queue upon return from this method.

   This method does not wait for actively executing tasks to

   terminate. Use awaitTermination to

   do that.

   There are no guarantees beyond best-effort attempts to stop

   processing actively executing tasks. This implementation

   interrupts tasks via Thread.interrupt(); any task that

   fails to respond to interrupts may never terminate.

  Specified by:

  shutdownNowin interfaceExecutorService

  Overrides:

  shutdownNowin classThreadPoolExecutor

  Returns:

  list of tasks that never commenced execution.

   Each element of this list is a ScheduledFuture.

   For tasks submitted via one of the schedule

   methods, the element will be identical to the returned

   ScheduledFuture. For tasks submitted using

   execute, the element will be a

   zero-delay ScheduledFuture.

  Throws:

  SecurityException - if a security manager exists and

   shutting down this ExecutorService may manipulate

   threads that the caller is not permitted to modify

   because it does not hold RuntimePermission("modifyThread"),

   or the security managers checkAccess method

   denies access.

  
getQueue

  

publicBlockingQueue Runnable getQueue ()

 

  Returns the task queue used by this executor. Access to the

   task queue is intended primarily for debugging and monitoring.

   This queue may be in active use. Retrieving the task queue

   does not prevent queued tasks from executing.

   Each element of this queue is a ScheduledFuture.

   For tasks submitted via one of the schedule methods, the

   element will be identical to the returned ScheduledFuture.

   For tasks submitted using execute, the element

   will be a zero-delay ScheduledFuture.

   Iteration over this queue is not guaranteed to traverse

   tasks in the order in which they will execute.

  Overrides:

  getQueuein classThreadPoolExecutor

  Returns:

  the task queue

  
Scripting on this page tracks web page traffic, but does not change the content in any way.

  以上就是ScheduledThreadPoolExecutor (Java SE 9 & JDK 9 )()的详细内容,想要了解更多 ScheduledThreadPoolExecutor (Java SE 9 & JDK 9 )的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: