public interface IScheduledExecutorService extends DistributedObject
ScheduledExecutorService.
 IScheduledExecutorService provides similar API to the
 ScheduledExecutorService with some exceptions but also
 additional methods like scheduling tasks on a specific member, on a member
 who is owner of a specific key, executing a tasks on multiple members etc.
 Tasks (Runnable and/or Callable) scheduled on
 any partition through an IScheduledExecutorService, yield
 some durability characteristics.
 
durability config), the
 scheduled task will get re-scheduled on a replica node.
 Member.
 Upon scheduling, a task acquires a resource handler, see
 ScheduledTaskHandler. The handler is generated before the actual
 scheduling of the task on the node, which allows for a way to access the
 future in an event of a node failure, immediately after scheduling, and
 also guarantees no duplicates in the cluster by utilising a unique name
 per task. A name can also be defined by the user by having the
 Runnable or Callable implement the NamedTask.
 Alternatively, one can wrap any task using the
 TaskUtils.named(String, Callable) or
 TaskUtils.named(String, Runnable) for simplicity.
 
One difference of this service in comparison to
 ScheduledExecutorService is the
 scheduleAtFixedRate(Runnable, long, long, TimeUnit) which has
 similar semantic to
 ScheduledExecutorService.scheduleAtFixedRate(Runnable, long, long, TimeUnit).
 It guarantees a task won't be executed by multiple threads concurrently.
 The difference is that this service will skip a scheduled execution if
 another thread is still running the same task, instead of postponing its
 execution.
 
The other difference is this service does not offer an equivalent of
 ScheduledExecutorService.scheduleWithFixedDelay(Runnable, long, long, TimeUnit)
 
Tasks that are holding state that needs to be also durable across
 partitions, will need to implement the StatefulTask interface.
 
Supports split brain protection SplitBrainProtectionConfig since 3.10
 in cluster versions 3.10 and higher.
| Modifier and Type | Method and Description | 
|---|---|
| <V> Map<Member,List<IScheduledFuture<V>>> | getAllScheduledFutures()Fetches and returns all scheduled (not disposed yet) futures from all
 members in the cluster. | 
| <V> IScheduledFuture<V> | getScheduledFuture(ScheduledTaskHandler handler)Creates a new  IScheduledFuturefrom the given handler. | 
| <V> IScheduledFuture<V> | schedule(Callable<V> command,
        long delay,
        TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the given delay. | 
| <V> IScheduledFuture<V> | schedule(Runnable command,
        long delay,
        TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the given delay. | 
| <V> IScheduledFuture<V> | 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. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnAllMembers(Callable<V> command,
                    long delay,
                    TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on all cluster  Members. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnAllMembers(Runnable command,
                    long delay,
                    TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on all cluster  Members. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnAllMembersAtFixedRate(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 on all
 cluster  Members. | 
| <V> IScheduledFuture<V> | scheduleOnKeyOwner(Callable<V> command,
                  Object key,
                  long delay,
                  TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on the partition owner of the given key. | 
| <V> IScheduledFuture<V> | scheduleOnKeyOwner(Runnable command,
                  Object key,
                  long delay,
                  TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on the partition owner of the given key. | 
| <V> IScheduledFuture<V> | scheduleOnKeyOwnerAtFixedRate(Runnable command,
                             Object key,
                             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 on the
 partition owner of the given key. | 
| <V> IScheduledFuture<V> | scheduleOnMember(Callable<V> command,
                Member member,
                long delay,
                TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay at the given  Member. | 
| <V> IScheduledFuture<V> | scheduleOnMember(Runnable command,
                Member member,
                long delay,
                TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay at the given  Member. | 
| <V> IScheduledFuture<V> | scheduleOnMemberAtFixedRate(Runnable command,
                           Member member,
                           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 at the
 given  Member. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnMembers(Callable<V> command,
                 Collection<Member> members,
                 long delay,
                 TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on all  Members given. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnMembers(Runnable command,
                 Collection<Member> members,
                 long delay,
                 TimeUnit unit)Creates and executes a one-shot action that becomes enabled after the
 given delay on all  Members given. | 
| <V> Map<Member,IScheduledFuture<V>> | scheduleOnMembersAtFixedRate(Runnable command,
                            Collection<Member> members,
                            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 on all
  Members given. | 
| void | shutdown()Initiates an orderly shutdown in which previously submitted tasks are
 executed, but no new tasks will be accepted. | 
destroy, getName, getPartitionKey, getServiceName@Nonnull <V> IScheduledFuture<V> schedule(@Nonnull Runnable command, long delay, @Nonnull TimeUnit unit)
V - the result type of the returned ScheduledFuturecommand - the task to executedelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> schedule(@Nonnull Callable<V> command, long delay, @Nonnull TimeUnit unit)
V - the return type of callable taskscommand - the task to executedelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleAtFixedRate(@Nonnull Runnable command, long initialDelay, long period, @Nonnull TimeUnit unit)
initialDelay then
 initialDelay+period, then initialDelay + 2 * period,
 and so on. If any execution of this task takes longer than its period,
 then subsequent execution will be skipped. If any execution of the task
 encounters an exception, subsequent executions are suppressed.
 Otherwise, the task will only terminate via cancellation or termination
 of the executor.V - the result type of the returned ScheduledFuturecommand - the task to executeinitialDelay - the time to delay first executionperiod - the period between successive executionsunit - the time unit of the initialDelay and period parametersget() method will throw an exception upon cancellationRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnMember(@Nonnull Runnable command, @Nonnull Member member, long delay, @Nonnull TimeUnit unit)
Member.V - the result type of the returned ScheduledFuturecommand - the task to executemember - the member to execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnMember(@Nonnull Callable<V> command, @Nonnull Member member, long delay, @Nonnull TimeUnit unit)
Member.V - the return type of callable taskscommand - the task to executemember - the member to execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnMemberAtFixedRate(@Nonnull Runnable command, @Nonnull Member member, long initialDelay, long period, @Nonnull TimeUnit unit)
Member.
 Executions will commence after initialDelay then
 initialDelay+period, then initialDelay + 2 * period, and
 so on. If any execution of this task takes longer than its period, then
 subsequent execution will be skipped. If any execution of the task
 encounters an exception, subsequent executions are suppressed.
 Otherwise, the task will only terminate via cancellation or termination
 of the executor.V - the result type of the returned ScheduledFuturecommand - the task to executemember - the member to execute the taskinitialDelay - the time to delay first executionperiod - the period between successive executionsunit - the time unit of the initialDelay and period parametersget() method will throw an exception upon cancellationRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnKeyOwner(@Nonnull Runnable command, @Nonnull Object key, long delay, @Nonnull TimeUnit unit)
V - the result type of the returned ScheduledFuturecommand - the task to executekey - the key to identify the partition owner, which will execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnKeyOwner(@Nonnull Callable<V> command, @Nonnull Object key, long delay, @Nonnull TimeUnit unit)
V - the return type of callable taskscommand - the task to executekey - the key to identify the partition owner, which will execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> scheduleOnKeyOwnerAtFixedRate(@Nonnull Runnable command, @Nonnull Object key, long initialDelay, long period, @Nonnull TimeUnit unit)
initialDelay then initialDelay+period, then
 initialDelay + 2 * period, and so on. If any execution of this
 task takes longer than its period, then subsequent execution will be skipped.
 If any execution of the task encounters an exception, subsequent executions
 are suppressed.
 Otherwise, the task will only terminate via cancellation or termination
 of the executor.V - the result type of the returned ScheduledFuturecommand - the task to executekey - the key to identify the partition owner, which will execute the taskinitialDelay - the time to delay first executionperiod - the period between successive executionsunit - the time unit of the initialDelay and period parametersget() method will throw an exception upon cancellationRejectedExecutionException - if the task cannot be  scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnAllMembers(@Nonnull Runnable command, long delay, @Nonnull TimeUnit unit)
Members.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost. If a new member is added, the task will not get scheduled there automatically.
V - the result type of the returned ScheduledFuturecommand - the task to executedelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnAllMembers(@Nonnull Callable<V> command, long delay, @Nonnull TimeUnit unit)
Members.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost. If a new member is added, the task will not get scheduled there automatically.
V - the return type of callable taskscommand - the task to executedelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnAllMembersAtFixedRate(@Nonnull Runnable command, long initialDelay, long period, @Nonnull TimeUnit unit)
Members. Executions will commence after
 initialDelay then initialDelay+period, then
 initialDelay + 2 * period, and so on. If any execution of this
 task takes longer than its period, then subsequent execution will be
 skipped. If any execution of the task encounters an exception, subsequent
 executions are suppressed.
 Otherwise, the task will only terminate via cancellation or termination
 of the executor.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost. If a new member is added, the task will not get scheduled there automatically.
V - the result type of the returned ScheduledFuturecommand - the task to executeinitialDelay - the time to delay first executionperiod - the period between successive executionsunit - the time unit of the initialDelay and period parametersget() method will throw an exception upon cancellationRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnMembers(@Nonnull Runnable command, @Nonnull Collection<Member> members, long delay, @Nonnull TimeUnit unit)
Members given.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost.
V - the result type of the returned ScheduledFuturecommand - the task to executemembers - the collections of members - where to execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnMembers(@Nonnull Callable<V> command, @Nonnull Collection<Member> members, long delay, @Nonnull TimeUnit unit)
Members given.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost.
V - the return type of callable taskscommand - the task to executemembers - the collections of members - where to execute the taskdelay - the time from now to delay executionunit - the time unit of the delay parameterget() method will return null upon completionRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> Map<Member,IScheduledFuture<V>> scheduleOnMembersAtFixedRate(@Nonnull Runnable command, @Nonnull Collection<Member> members, long initialDelay, long period, @Nonnull TimeUnit unit)
Members given. Executions will commence after initialDelay
 then initialDelay+period, then initialDelay + 2 * period,
 and so on. If any execution of this task takes longer than its period,
 then subsequent execution will be skipped. If any execution of the task
 encounters an exception, subsequent executions are suppressed.
 Otherwise, the task will only terminate via cancellation or termination
 of the executor.
 Note: In the event of Member leaving the cluster, for whatever reason, the task is lost.
V - the result type of the returned ScheduledFuturecommand - the task to executemembers - the collections of members - where to execute the taskinitialDelay - the time to delay first executionperiod - the period between successive executionsunit - the time unit of the initialDelay and period parametersget() method will throw an exception upon cancellationRejectedExecutionException - if the task cannot be scheduled for executionNullPointerException - if command is null@Nonnull <V> IScheduledFuture<V> getScheduledFuture(@Nonnull ScheduledTaskHandler handler)
IScheduledFuture from the given handler. This is
 useful in case your member node or client from which the original
 scheduling happened, went down, and now you want to access the
 ScheduledFuture again.V - the result type of the returned ScheduledFuturehandler - The handler of the task as found from IScheduledFuture.getHandler()IScheduledFuture from the given handler.@Nonnull <V> Map<Member,List<IScheduledFuture<V>>> getAllScheduledFutures()
Map.V - the result type of the returned ScheduledFutureMap with Member keys and a List of IScheduledFuture
 found for this scheduler.void shutdown()
This method does not wait for previously submitted tasks to complete execution.
Copyright © 2020 Hazelcast, Inc.. All rights reserved.