首页 > 代码库 > scala actor编程之对象传递
scala actor编程之对象传递
scala 最吸引人的一点就是actor并发编程了。但是纵观scala官方文档,baidu文档,IBM文档都写的通过字符串传呀传,如果用作actor编程说明当然没有问题。但是在正式开放中,光传字符串就显的势单力薄了。
所以如何传对象呢?
先看通过字符串传递消息的模型:
消息接收类:
import scala.actors.Actorimport org.andy.rtbd.actor.ActorDealclass ActorRev1 extends Actor{ def act()={ while(true){ receive {case str:String =>println("There is say "+str) case _=>println("There is no message ") } } } def dealAD(adm:ActorDeal)={ adm.dealPrint }}
消息发送类
object ActorSed { def main(args: Array[String]): Unit = { var ar = new ActorRev1() ar.start ar!"111" }}
执行ActorSed,看一下结果:
There is say 111
这个结果是最简单通过字符串传递消息的,那么我们改造一下,看看如何传递对象。
首先,添加一个class。
class ActorDeal { var msg:String="" def dealPrint() = { println("From deal " + msg) }}
然后改造消息接受类:
1 import scala.actors.Actor 2 import org.andy.rtbd.actor.ActorDeal 3 4 class ActorRev1 extends Actor{ 5 6 def act()={ 7 while(true){ 8 receive { 9 case ad:ActorDeal => dealAD(ad)10 case str:String =>println("There is say "+str)11 case _=>println("There is no message ")12 }13 }14 }15 16 def dealAD(adm:ActorDeal)={17 18 adm.dealPrint19 20 }21 }
高亮的部分是新增的消息接收选项,so easy,我们对发送类稍加改造即可测试:
1 object ActorSed { 2 3 def main(args: Array[String]): Unit = { 4 var ar = new ActorRev1() 5 ar.start 6 var adm = new ActorDeal 7 adm.msg="HEHE" 8 9 ar!"111"10 ar!adm11 }12 13 }
OK,我们可以看结果了:
1 There is say 1112 From deal HEHE
虽说,代码量很小,但找了半天都没找到这方面的资料。自己苦逼看了半天,才蒙出来的。
如果对您有用的话,请推荐一下。谢谢
scala actor编程之对象传递
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。