LightArrayRevolverScheduler, see #2904
- based on a wheel (AtomicReferenceArray) from which atomic single-linked lists dangle - no locks - deterministic tests due to overridable time source - also bring docs up to date
This commit is contained in:
parent
9f2a0afc05
commit
8dea20a1f1
20 changed files with 863 additions and 202 deletions
53
akka-actor/src/main/java/akka/actor/AbstractScheduler.java
Normal file
53
akka-actor/src/main/java/akka/actor/AbstractScheduler.java
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
/**
|
||||
* Copyright (C) 2009-2012 Typesafe Inc. <http://www.typesafe.com>
|
||||
*/
|
||||
|
||||
package akka.actor;
|
||||
|
||||
import scala.concurrent.ExecutionContext;
|
||||
import scala.concurrent.duration.FiniteDuration;
|
||||
|
||||
//#scheduler
|
||||
/**
|
||||
* An Akka scheduler service. This one needs one special behavior: if
|
||||
* Closeable, it MUST execute all outstanding tasks upon .close() in order
|
||||
* to properly shutdown all dispatchers.
|
||||
*
|
||||
* Furthermore, this timer service MUST throw IllegalStateException if it
|
||||
* cannot schedule a task. Once scheduled, the task MUST be executed. If
|
||||
* executed upon close(), the task may execute before its timeout.
|
||||
*
|
||||
* Scheduler implementation are loaded reflectively at ActorSystem start-up
|
||||
* with the following constructor arguments:
|
||||
* 1) the system’s com.typesafe.config.Config (from system.settings.config)
|
||||
* 2) a akka.event.LoggingAdapter
|
||||
* 3) a java.util.concurrent.ThreadFactory
|
||||
*/
|
||||
public abstract class AbstractScheduler extends AbstractSchedulerBase {
|
||||
|
||||
/**
|
||||
* Schedules a function to be run repeatedly with an initial delay and
|
||||
* a frequency. E.g. if you would like the function to be run after 2
|
||||
* seconds and thereafter every 100ms you would set delay = Duration(2,
|
||||
* TimeUnit.SECONDS) and interval = Duration(100, TimeUnit.MILLISECONDS)
|
||||
*/
|
||||
@Override
|
||||
public abstract Cancellable schedule(FiniteDuration initialDelay,
|
||||
FiniteDuration interval, Runnable runnable, ExecutionContext executor);
|
||||
|
||||
/**
|
||||
* Schedules a Runnable to be run once with a delay, i.e. a time period that
|
||||
* has to pass before the runnable is executed.
|
||||
*/
|
||||
@Override
|
||||
public abstract Cancellable scheduleOnce(FiniteDuration delay, Runnable runnable,
|
||||
ExecutionContext executor);
|
||||
|
||||
/**
|
||||
* The maximum supported task frequency of this scheduler, i.e. the inverse
|
||||
* of the minimum time interval between executions of a recurring task, in Hz.
|
||||
*/
|
||||
@Override
|
||||
public abstract double maxFrequency();
|
||||
}
|
||||
//#scheduler
|
||||
Loading…
Add table
Add a link
Reference in a new issue