= doc: Added warning about closing over in scheduled tasks #3263
This commit is contained in:
parent
1cca2b85e3
commit
57a1a83dd0
2 changed files with 18 additions and 0 deletions
|
|
@ -39,6 +39,15 @@ Schedule a Runnable, that sends the current time to the testActor, to be execute
|
||||||
.. includecode:: code/docs/actor/SchedulerDocTest.java
|
.. includecode:: code/docs/actor/SchedulerDocTest.java
|
||||||
:include: schedule-one-off-thunk
|
:include: schedule-one-off-thunk
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
If you schedule Runnable instances you should be extra careful
|
||||||
|
to not pass or close over unstable references. In practice this means that you should
|
||||||
|
not call methods on the enclosing Actor from within the Runnable.
|
||||||
|
If you need to schedule an invocation it is better to use the ``schedule()``
|
||||||
|
variant accepting a message and an ``ActorRef`` to schedule a message to self
|
||||||
|
(containing the necessary parameters) and then call the method when the message is received.
|
||||||
|
|
||||||
Schedule to send the "Tick"-message to the ``tickActor`` after 0ms repeating every 50ms:
|
Schedule to send the "Tick"-message to the ``tickActor`` after 0ms repeating every 50ms:
|
||||||
|
|
||||||
.. includecode:: code/docs/actor/SchedulerDocTest.java
|
.. includecode:: code/docs/actor/SchedulerDocTest.java
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,15 @@ Some examples
|
||||||
.. includecode:: code/docs/actor/SchedulerDocSpec.scala
|
.. includecode:: code/docs/actor/SchedulerDocSpec.scala
|
||||||
:include: schedule-recurring
|
:include: schedule-recurring
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
If you schedule functions or Runnable instances you should be extra careful
|
||||||
|
to not close over unstable references. In practice this means not using ``this``
|
||||||
|
inside the closure in the scope of an Actor instance, not accessing ``sender`` directly
|
||||||
|
and not calling the methods of the Actor instance directly. If you need to
|
||||||
|
schedule an invocation schedule a message to ``self`` instead (containing the
|
||||||
|
necessary parameters) and then call the method when the message is received.
|
||||||
|
|
||||||
From ``akka.actor.ActorSystem``
|
From ``akka.actor.ActorSystem``
|
||||||
-------------------------------
|
-------------------------------
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue