第17课:Scala并发编程实战及Spark源码阅读

本节课主题
1、Spark源码中并发编程源码阅读
2、Scala并发编程实战

早期Spark中是通过Akka进行并发通信,Spark 1.6.x以后是通过Netty,在Scala中是通过Actor来实现并发编程,就相当于收邮件和发邮件机制。
我们通过代码实战Actor
在进行Scala的Actor编程前(Scala 2.11.8版本),需要先引进2个jar包:
scala-actors.jar
scala-actors-migration.jar

参考示例代码:
package com.dt.scala
import scala.actors.Actor

case class Hello(name: String, content: String, sender: Actor)
case class HelloBack(name: String, content: String, sender: Actor)

class HelloActor extends Actor {
  var counter = 0
  override def act() {
    while (true) {
      receive {
        case content: String => println("Message:" + content)
        case Hello(name, content, sender) => {
          println("HelloActor:" + name + " content:" + content + counter)
          counter += 1
          Thread.sleep(3000) //睡眠3s
          sender ! HelloBack(name, content, this)  // Actor发送消息语法!
        }
      }
    }
  }
}

class HelloBackActor(val helloActor: Actor) extends Actor {
  var counter = 0
  override def act() {
    //启动给HelloActor发送信息
    helloActor ! Hello("Spark", "Love is here!", this) // this = HelloBackActor
    while (true) {
      receive {
        case content: String => println("Message:" + content)
        case HelloBack(name, content, sender) => {
          println("HelloBackActor:" + name + " content:" + content + counter)
          counter += 1
          Thread.sleep(3000) //睡眠3s
          sender ! Hello(name, content, this)
        }
      }
    }
  }
}

object HelloScalaActor {
  def main(args: Array[String]): Unit = {
    val helloActor = new HelloActor
    helloActor.start() //启动Actor来接收消息
    
    val hellBackActor = new HelloBackActor(helloActor)
    hellBackActor.start()

    //    var counter = 0
    //    while (true) {
    //      helloActor ! "Life is short,you need spark!!!" + counter //Actor发消息语法:!
    //      counter += 1
    //
    //      //发完消息睡眠3s
    //      Thread.sleep(3000)
    //    }

    //发送消息
    //helloActor ! Hello("Spark", "you need spark!!!")
  }
}
备注:
资料来源于:DT_大数据梦工厂(Spark"蘑菇云"行动)
更多私密内容,请关注微信公众号:DT_Spark
如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,
地址YY房间号:68917580

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值