Scala Actor并发编程 实战(五)

Scala Actor并发编程 实战(五)

结合 case class 样例类发送消息和接受消息
1、将消息封装在一个样例类中
2、通过匹配不同的样例类去执行不同的操作
3、Actor 可以返回消息给发送方。通过 sender 方法向当前消息发送方返回消息

package cn.cheng.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)
    }
}

喜欢就点赞评论+关注吧

这里写图片描述

感谢阅读,希望能帮助到大家,谢谢大家的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值