|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object akka.actor.LightArrayRevolverScheduler
public class LightArrayRevolverScheduler
This scheduler implementation is based on a revolving wheel of buckets, like Netty’s HashedWheelTimer, which it advances at a fixed tick rate and dispatches tasks it finds in the current bucket to their respective ExecutionContexts. The tasks are held in TaskHolders, which upon cancellation null out their reference to the actual task, leaving only this shell to be cleaned up when the wheel reaches that bucket next time. This enables the use of a simple linked list to chain the TaskHolders off the wheel.
Also noteworthy is that this scheduler does not obtain a current time stamp when scheduling single-shot tasks, instead it always rounds up the task delay to a full multiple of the TickDuration. This means that tasks are scheduled possibly one tick later than they could be (if checking that “now() + delay <= nextTick” were done).
Nested Class Summary | |
---|---|
protected static class |
LightArrayRevolverScheduler.TaskHolder
INTERNAL API |
protected static interface |
LightArrayRevolverScheduler.TimerTask
INTERNAL API |
Constructor Summary | |
---|---|
LightArrayRevolverScheduler(com.typesafe.config.Config config,
LoggingAdapter log,
java.util.concurrent.ThreadFactory threadFactory)
|
Method Summary | |
---|---|
protected long |
clock()
Clock implementation is replaceable (for testing); the implementation must return a monotonically increasing series of Long nanoseconds. |
void |
close()
|
protected scala.concurrent.duration.FiniteDuration |
getShutdownTimeout()
Overridable for tests |
double |
maxFrequency()
The maximum supported task frequency of this scheduler, i.e. |
Cancellable |
schedule(scala.concurrent.duration.FiniteDuration initialDelay,
scala.concurrent.duration.FiniteDuration delay,
java.lang.Runnable runnable,
scala.concurrent.ExecutionContext executor)
Schedules a function to be run repeatedly with an initial delay and a frequency. |
Cancellable |
scheduleOnce(scala.concurrent.duration.FiniteDuration delay,
java.lang.Runnable runnable,
scala.concurrent.ExecutionContext executor)
Schedules a Runnable to be run once with a delay, i.e. |
scala.concurrent.duration.FiniteDuration |
ShutdownTimeout()
|
protected int |
startTick()
Replaceable for testing. |
scala.concurrent.duration.FiniteDuration |
TickDuration()
|
protected void |
waitNanos(long nanos)
Overridable for tests |
int |
WheelSize()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface akka.actor.Scheduler |
---|
schedule, schedule, scheduleOnce, scheduleOnce |
Constructor Detail |
---|
public LightArrayRevolverScheduler(com.typesafe.config.Config config, LoggingAdapter log, java.util.concurrent.ThreadFactory threadFactory)
Method Detail |
---|
public int WheelSize()
public scala.concurrent.duration.FiniteDuration TickDuration()
public scala.concurrent.duration.FiniteDuration ShutdownTimeout()
protected long clock()
protected int startTick()
protected scala.concurrent.duration.FiniteDuration getShutdownTimeout()
protected void waitNanos(long nanos)
nanos
- (undocumented)public Cancellable schedule(scala.concurrent.duration.FiniteDuration initialDelay, scala.concurrent.duration.FiniteDuration delay, java.lang.Runnable runnable, scala.concurrent.ExecutionContext executor)
Scheduler
Java API
schedule
in interface Scheduler
initialDelay
- (undocumented)delay
- (undocumented)runnable
- (undocumented)executor
- (undocumented)
public Cancellable scheduleOnce(scala.concurrent.duration.FiniteDuration delay, java.lang.Runnable runnable, scala.concurrent.ExecutionContext executor)
Scheduler
Java & Scala API
scheduleOnce
in interface Scheduler
delay
- (undocumented)runnable
- (undocumented)executor
- (undocumented)
public void close()
close
in interface java.io.Closeable
public double maxFrequency()
Scheduler
maxFrequency
in interface Scheduler
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |