B22 - 057、Actor实战案例Ⅴ

初学耗时:0.5h

注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

一、Actor实战案例Ⅴ



记忆词:

  ...

B22 - 999、大数据组件学习⑲ - Scala


ギ 舒适区ゾ || ♂ 累觉无爱 ♀





一、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
B22 - 057、Actor实战案例Ⅴ



人无喜色休开店,事不遂心莫怨天。

- - - - - - - - - - - - - - - - - - - - - - - - - - - -


注:CSDN手机端暂不支持章节内链跳转,但外链可用,更好体验还请上电脑端。

我知道我的不足,我也知道你的挑剔,但我就是我,不一样的烟火,谢谢你的指指点点,造就了我的点点滴滴:)!



人无喜色休开店,事不遂心莫怨天。


上一篇:B22 - 058、Actor实战案例Ⅵ


下一篇:B22 - 051、Actor的执行顺序