初学耗时:0.5h
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
记忆词:
...
一、Actor实战案例Ⅴ
-
结合case class样例类发送消息和接受消息:
1、将消息封装在一个样例类中
2、通过匹配不同的样例类去执行不同的操作
3、Actor可以返回消息给发送方。通过sender方法向当前消息发送方返回消息
package cn.zrk.actor
import scala.actors.Actor
case class SyncMessage(id:Int,msg:String)//同步消息
case class AsyncMessage(id:Int,msg:String)//异步消息
case class ReplyMessage(id:Int,msg:String)//返回结果消息
class MsgActor extends Actor{
override def act(): Unit ={
loop{
react{
case "start"=>{println("starting....")}
case SyncMessage(id,msg)=>{
println(s"id:$id, SyncMessage: $msg")
Thread.sleep(2000)
sender !ReplyMessage(1,"finished...")
}
case AsyncMessage(id,msg)=>{
println(s"id:$id,AsyncMessage: $msg")
// Thread.sleep(2000)
sender !ReplyMessage(3,"finished...")
Thread.sleep(2000)
}
}
}
}
}
object MainActor {
def main(args: Array[String]): Unit = {
val mActor=new MsgActor
mActor.start()
mActor!"start"
//同步消息 有返回值
val reply1= mActor!?SyncMessage(1,"我是同步消息")
println(reply1)
println("===============================")
//异步无返回消息
val reply2=mActor!AsyncMessage(2,"我是异步无返回消息")
println("===============================")
//异步有返回消息
val reply3=mActor!!AsyncMessage(3,"我是异步有返回消息")
//Future的apply()方法会构建一个异步操作且在未来某一个时刻返回一个值
val result=reply3.apply()
println(result)
}
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
^ 至此,Actor实战案例Ⅴ完成。
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
※ 世间诱惑何其多,坚定始终不动摇。
在大型软件开发中,用户承担的工作是( )
…
A、验收模块
B、要求修改
C、交付检验
D、试运行
…
B
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。
我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!