第68讲 scala并发编程原生线程actor、class class 下的消息传递和偏函数
2015-07-28 07:28
309 查看
上一节讲了actor message 是通过message 向actor 的发送消息,开发者只需要向actor 发送消息,不需要关心actor与线程更高程度的抽象。其实scala 也可以当线程当actor 使用
self.receive {case msg => println(msg)} 放在main 函数中,接受其他actor 发送的消息。
方便模式匹配
方便并发、分布式编程提供方便
解决方法有2个,一是,指定接受消息的actor ,另一个是 设置全局的actor
尽可能处理actor所有消息
由于actor的邮箱 是有限的,方法如下:
参考文档
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764
一、 Scala的原生线程(Main主线程)当 Actor
import scala.actors.Actor import scala.actors.Actor._ case class Person(name:String,age:Int) class HelloActor extends Actor{ def act(): Unit ={ while(true){ receive{ case Person(name,age) =>{ println("name:" + name + ",age="+age) sender ! "Echo!!" } } } } } object Actor_With_CaseClass { def main (args: Array[String]) { val hActor = new HelloActor hActor.start hActor ! Person("spark" ,6 ) self.receive {case msg => println(msg)} } }
self.receive {case msg => println(msg)} 放在main 函数中,接受其他actor 发送的消息。
二、case class 作为消息的好处
消息不可变方便模式匹配
方便并发、分布式编程提供方便
三、 使用actor 注意点
尽量不要消息共享解决方法有2个,一是,指定接受消息的actor ,另一个是 设置全局的actor
尽可能处理actor所有消息
由于actor的邮箱 是有限的,方法如下:
receive{ case Person(name,age) =>{ println("name:" + name + ",age="+age) sender ! "Echo!!" } case _ => }
参考文档
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764
相关文章推荐
- python之import
- C语言之三种循环结构与递归函数的对比
- Ubuntu 中的编程语言(下)
- Java开发调试技巧及Eclipse快捷键使用方法
- C#属性代码生成失败,程序集未标记为可序列化
- c# 当前不会命中断点 未加载该文档
- C#设计界面时,未将对象引用设置到对象实例问题解决方案
- 初用python的几点总结
- 在eclipse下配置maven
- Django basic command
- Delphi调用C#编写的WebService返回空值
- JAVA笔记之数组
- 学习Java的同学如何使自己个人电脑拥有良好的Java运行环境
- 第五天学习笔记
- POJ 3259 BellmanFord算法和poj2240几乎一样
- 杭电ACM2036java做法
- php常用算法
- php.ini帮助理解
- 读书笔记MoreEffectiveC++(19)
- 读书笔记MoreEffectiveC++(18)