有时需要设定将来发生的事情,这时该怎么办? ActorSystem 搞定一切! 在那儿你能找到 scheduler 方法,它返回一个 akka.actor.Scheduler 实例, 这个实例在每个Actor系统里是唯一的,用来指定一段时间后发生的行为。请注意定时任务是使用 ActorSystem 的 MessageDispatcher 执行的.
你可以计划向actor发送消息或执行任务的代码 (函数或Runnable). 你会得到一个 Cancellable 类型的返回值,你可以调用 cancel 来取消定时任务的执行。
import akka.actor._
import akka.actor.{Props,DeadLetter}
import akka.event.Logging
import akka.actor.ActorSystem
import akka.util.Timeout
import akka.pattern.ask
import scala.concurrent.duration._
import akka.actor.ReceiveTimeout
import akka.pattern.gracefulStop
import scala.concurrent.{Await,Future}
import akka.event.LogSource
import akka.actor.ActorSystem
class MyActor extends Actor{
def receive = {
case para:String => println(para)
case _ => ()
}
}
object DemoTest8{
val system = ActorSystem("msSystem")
val act1 = system.actorOf(Props[MyActor],"first")
implicit val time = Timeout(5 seconds)
def main(args: Array[String]): Unit = {
import scala.concurrent.ExecutionContext.Implicits.global
//1.system.scheduler.scheduleOnce(2 seconds, act1, "foo")
/*2.system.scheduler.scheduleOnce(2 seconds){
act1 ? "Hello"
}*/
//3.这将会计划0ms后每50ms向tickActor发送 Tick-消息
val Tick = "tick"
val cancellable = system.scheduler.schedule(0 milliseconds,1 seconds,act1,Tick)
//这会取消未来的Tick发送
//cancellable.cancel()
}
}