//创建样例类 case class AsyncMsg(id: Int, msg: String) case class SyncMsg(id: Int, msg: String) case class ReplyMsg(id: Int, msg: String) object ActorDemo01 extends Actor { override def act(): Unit = { while (true) { receive { case "start" => println("starting...") case AsyncMsg(id, msg) => { println(s"id:$id,msg:$msg") sender ! ReplyMsg(1,"sucess") //接收到消息后返回响应消息 } case SyncMsg(id,msg) => { println(s"id:$id,msg:$msg") sender ! ReplyMsg(2,"sucess") } } } } } object ActorTest{ def main(args: Array[String]): Unit = { val actor: Actor = ActorDemo01.start() // //异步发送消息,没有返回值 // actor ! AsyncMsg(3,"heihei") // println("异步消息发送完成,没有返回值") // //同步发送消息,有返回值 // val text: Any = actor !? SyncMsg(4,"OK") // println(text) // println("同步消息发送成功") //异步发送消息,有返回值,返回类型为Future[Any] val reply: Future[Any] = actor !! SyncMsg(5,"OK is 不存在的") Thread.sleep(2000) if (reply.isSet){ val applyMsg: Any = reply.apply() println(applyMsg) }else{ println("Nothing") } } } |