Package io.netty.util.concurrent
Class AbstractScheduledEventExecutor
- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- io.netty.util.concurrent.AbstractEventExecutor
-
- io.netty.util.concurrent.AbstractScheduledEventExecutor
-
- All Implemented Interfaces:
EventExecutor
,EventExecutorGroup
,Iterable<EventExecutor>
,Executor
,ExecutorService
,ScheduledExecutorService
- Direct Known Subclasses:
GlobalEventExecutor
,SingleThreadEventExecutor
public abstract class AbstractScheduledEventExecutor extends AbstractEventExecutor
Abstract base class forEventExecutor
s that want to support scheduling.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class io.netty.util.concurrent.AbstractEventExecutor
AbstractEventExecutor.LazyRunnable
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractScheduledEventExecutor()
protected
AbstractScheduledEventExecutor(EventExecutorGroup parent)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected boolean
afterScheduledTaskSubmitted(long deadlineNanos)
protected boolean
beforeScheduledTaskSubmitted(long deadlineNanos)
Called from arbitrary non-EventExecutor
threads prior to scheduled task submission.protected void
cancelScheduledTasks()
Cancel all scheduled tasks.protected static long
deadlineToDelayNanos(long deadlineNanos)
Given an arbitrary deadlinedeadlineNanos
, calculate the number of nano seconds from nowdeadlineNanos
would expire.protected boolean
hasScheduledTasks()
Returnstrue
if a scheduled task is ready for processing.protected static long
initialNanoTime()
The initial value used for delay and computations based upon a monatomic time source.protected static long
nanoTime()
protected long
nextScheduledTaskDeadlineNanos()
Return the deadline (in nanoseconds) when the next scheduled task is ready to be run or-1
if no task is scheduled.protected long
nextScheduledTaskNano()
Return the nanoseconds until the next scheduled task is ready to be run or-1
if no task is scheduled.protected Runnable
pollScheduledTask()
protected Runnable
pollScheduledTask(long nanoTime)
Return theRunnable
which is ready to be executed with the givennanoTime
.ScheduledFuture<?>
schedule(Runnable command, long delay, TimeUnit unit)
<V> ScheduledFuture<V>
schedule(Callable<V> callable, long delay, TimeUnit unit)
ScheduledFuture<?>
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
ScheduledFuture<?>
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
protected void
validateScheduled(long amount, TimeUnit unit)
Deprecated.will be removed in the future.-
Methods inherited from class io.netty.util.concurrent.AbstractEventExecutor
inEventLoop, iterator, lazyExecute, newFailedFuture, newProgressivePromise, newPromise, newSucceededFuture, newTaskFor, newTaskFor, next, parent, safeExecute, shutdown, shutdownGracefully, shutdownNow, submit, submit, submit
-
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.netty.util.concurrent.EventExecutor
inEventLoop
-
Methods inherited from interface io.netty.util.concurrent.EventExecutorGroup
isShuttingDown, shutdownGracefully, terminationFuture
-
Methods inherited from interface java.util.concurrent.ExecutorService
awaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminated
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
AbstractScheduledEventExecutor
protected AbstractScheduledEventExecutor()
-
AbstractScheduledEventExecutor
protected AbstractScheduledEventExecutor(EventExecutorGroup parent)
-
-
Method Detail
-
nanoTime
protected static long nanoTime()
-
deadlineToDelayNanos
protected static long deadlineToDelayNanos(long deadlineNanos)
Given an arbitrary deadlinedeadlineNanos
, calculate the number of nano seconds from nowdeadlineNanos
would expire.- Parameters:
deadlineNanos
- An arbitrary deadline in nano seconds.- Returns:
- the number of nano seconds from now
deadlineNanos
would expire.
-
initialNanoTime
protected static long initialNanoTime()
The initial value used for delay and computations based upon a monatomic time source.- Returns:
- initial value used for delay and computations based upon a monatomic time source.
-
cancelScheduledTasks
protected void cancelScheduledTasks()
Cancel all scheduled tasks. This method MUST be called only whenAbstractEventExecutor.inEventLoop()
istrue
.
-
pollScheduledTask
protected final Runnable pollScheduledTask()
- See Also:
pollScheduledTask(long)
-
pollScheduledTask
protected final Runnable pollScheduledTask(long nanoTime)
Return theRunnable
which is ready to be executed with the givennanoTime
. You should usenanoTime()
to retrieve the correctnanoTime
.
-
nextScheduledTaskNano
protected final long nextScheduledTaskNano()
Return the nanoseconds until the next scheduled task is ready to be run or-1
if no task is scheduled.
-
nextScheduledTaskDeadlineNanos
protected final long nextScheduledTaskDeadlineNanos()
Return the deadline (in nanoseconds) when the next scheduled task is ready to be run or-1
if no task is scheduled.
-
hasScheduledTasks
protected final boolean hasScheduledTasks()
Returnstrue
if a scheduled task is ready for processing.
-
schedule
public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
- Specified by:
schedule
in interfaceEventExecutorGroup
- Specified by:
schedule
in interfaceScheduledExecutorService
- Overrides:
schedule
in classAbstractEventExecutor
-
schedule
public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
- Specified by:
schedule
in interfaceEventExecutorGroup
- Specified by:
schedule
in interfaceScheduledExecutorService
- Overrides:
schedule
in classAbstractEventExecutor
-
scheduleAtFixedRate
public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
- Specified by:
scheduleAtFixedRate
in interfaceEventExecutorGroup
- Specified by:
scheduleAtFixedRate
in interfaceScheduledExecutorService
- Overrides:
scheduleAtFixedRate
in classAbstractEventExecutor
-
scheduleWithFixedDelay
public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
- Specified by:
scheduleWithFixedDelay
in interfaceEventExecutorGroup
- Specified by:
scheduleWithFixedDelay
in interfaceScheduledExecutorService
- Overrides:
scheduleWithFixedDelay
in classAbstractEventExecutor
-
validateScheduled
@Deprecated protected void validateScheduled(long amount, TimeUnit unit)
Deprecated.will be removed in the future.Sub-classes may override this to restrict the maximal amount of time someone can use to schedule a task.
-
beforeScheduledTaskSubmitted
protected boolean beforeScheduledTaskSubmitted(long deadlineNanos)
Called from arbitrary non-EventExecutor
threads prior to scheduled task submission. Returnstrue
if theEventExecutor
thread should be woken immediately to process the scheduled task (if not already awake).If
false
is returned,afterScheduledTaskSubmitted(long)
will be called with the same value after the scheduled task is enqueued, providing another opportunity to wake theEventExecutor
thread if required.- Parameters:
deadlineNanos
- deadline of the to-be-scheduled task relative tonanoTime()
- Returns:
true
if theEventExecutor
thread should be woken,false
otherwise
-
afterScheduledTaskSubmitted
protected boolean afterScheduledTaskSubmitted(long deadlineNanos)
SeebeforeScheduledTaskSubmitted(long)
. Called only after that method returns false.- Parameters:
deadlineNanos
- relative tonanoTime()
- Returns:
true
if theEventExecutor
thread should be woken,false
otherwise
-
-