本文主要是介绍scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考代码:
import scala.actors._case class Person(name:String,age:Int)
class HelloActor extends Actor{def act(){while(true){receive{case Person(name,age)=>{ //偏函数println("Name: "+ name + ":" +"Age:" +age)sender ! "Echo!!!"}case _ => println("Something else...")}}}
}object Actor_With_CaseClass {def main(args: Array[String]): Unit = {val hiActor = new HelloActorhiActor.starthiActor ! Person("Spark",6)self.receive{case msg=> println(msg)}
// self.receiveWithin(1000){case msg=> println(msg)} //指定超时时间,不会一直等待下去}
}
//不同的Actor通讯的四种模式有:
//1.全局的Actor、2.在构建一个Actor时可以有它的引用即可以传递参数过来、
//3.消息传递时,消息的接收者处理完这个消息后要把结果交给此Actor
//4.返回消息给发送方,scala中使用sender关键词。
具体应用可以到spark源码Master.scala类中找到,部分代码如下:
override def electedLeader(){self ! ElectedLeader}
override def revokedLeadership(){self ! RevokedLeadership}
相关来源:DT大数据梦工厂,微信公众号是DT_Spark,每天都会有大数据实战视频发布,请您持续学习。
相关资料:
scala深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码45e2
这篇关于scala并发编程原生线程Actor、Case Class下的消息传递和偏函数实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!