zoukankan      html  css  js  c++  java
  • 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 HelloActor
        hiActor.start
        hiActor ! 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  訪问password45e2



  • 相关阅读:
    HDOJ 2076 夹角有多大(题目已修改,注意读题)
    HDOJ 2058 The sum problem
    HDOJ 2099 整除的尾数
    HDOJ 2075 A|B?
    HDOJ 2071 Max Num
    HDOJ 2056 Rectangles
    HDOJ 2055 An easy problem
    HDOJ 2053 Switch Game
    HDOJ 2052 Picture
    P4139 上帝与集合的正确用法
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6925190.html
Copyright © 2011-2022 走看看