import scala.actors.Actor
import scala.actors.Actor._
object Actor_Messages extends Actor {
def act(): Unit = {
while(true) {
receive ({ //偏函数
case msg => println("Message content from inbox: " + msg)
})
}
}
}
/**
* 通过actor方法,处理actor收件箱中的消息
*/
object Actor_Message {
def main(args: Array[String]): Unit = {
val actor_Message = actor {
while(true) {
/**
* receive是偏函数,有两个方法apply和isDefineAt,apply用来解析(模式匹配),
* sDefineAt判断消息是否被定义为要处理的消息(是否有相应的case),如果有,返回true,否则false
* actor内部只会处理有匹配到的,没有case到的忽略,并不会报异常(内部先调用isDefneAt,true时才传给apply进行模式匹配)
* receive是阻塞式的
*/
receive {
case msg => println("Message content from inbox: " + msg)
}
}
}
val double_Message = actor {
while(true) {
receive {
case msg: Double => println("Double number from inbox: " + msg)
case _ => println("Something else.")
}
}
}
Actor_Messages.start
Actor_Messages ! "kafka" //通过!的方式发送消息
actor_Message ! "Spark"
double_Message ! Math.PI
double_Message ! "Hadoop"
}
}
scala进阶21-actor之消息传递
最新推荐文章于 2021-08-08 11:59:48 发布