Scala并发编程react、loop代码实战具体解释

演示样例代码及凝视:

    //scala并发编程中的react和loop,共同特点:
    //通过线程存用的方式让性能有所提升。
    //Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的线程让当前的actor使用
    //普通情况下每一个Actor都有自己的线程。仅仅有有自己的线程时,我们的Actor中的actor方法才会运行。
    //可是,这样线程的开销会很大,所以为了共用线程,一个actor使用多个线程后,我们不想马上回收,我们想共用。
    //scala给我们提供了两个方法:react方法和loop方法
    //react和receive事实上都是偏函数
object NameResolver extends Actor{
  def act(){
    /*react{//不返回详细的内容
      case Net(name,actor)=>
        sender ! getIp(name)
        act
      case "EXIT" => println("Name resolver exiting.")
      case msg =>
        println("Unhandled message : "+msg)
        act
    }*/
    loop{//反复运行一个代码块
      react{
        case Net (name,actor) =>
          actor ! getIp(name)
        case msg =>
          println("Unhadled message" + msg)
      }
    }
  }
  def getIp(name : String) : Option[InetAddress]= {
    try{
      println(InetAddress.getByName(name))
      Some(InetAddress.getByName(name))
    }catch{
      case _ : UnknownHostException => None
    }
  }
}
case class Net(name :String,actor:Actor)

object Actor_More_Effective{
  def main(args: Array[String]): Unit = {
    NameResolver.start
    NameResolver ! Net("www.baidu.com",self)

    println(self.receiveWithin(1000){case x=>x})
  }
}

相关来源:DT大数据梦工厂。微信公众号是DT_Spark,每天都会有大数据实战视频公布,请您持续学习。

相关资料:

scala深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6

腾讯微云:http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy  訪问password45e2

时间: 2024-10-06 16:41:45

Scala并发编程react、loop代码实战具体解释的相关文章

scala并发编程react loop实战(视频69)

1.react和receive区别 所有Actor共享一个线程池,总的线程个数可以配置,也可以根据CPU个数决定:当一个Actor启动之后,Scala分配一个线程给它使用,如果使用receive模型,这个线程就一直为该Actor所有,如果使用react模型,Scala执行完react方法后抛出异常,则该线程就可以被其它Actor使用 2.loop为了简化react编程模型 视频地址:http://yun.baidu.com/s/1i3riO7r?fid=993790044798282 公众号:D

Scala并发编程react、loop代码实战

学习了Scala并发编程react.loop代码实战详解,通过线程重用,提升性能.具体通过loop进行循环,应用react重复接收消息,适用于带有界面的事件驱动的方式 def  act() loop{ React { Case Net(name,actor)=> Actor! getIp(name) Case msg=> Println(“Unhanded message:”+msg) } } 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和P

Scala并发编程react、loop代码实战解析

Scala并发编程react.loop代码实战解析,内容介绍和视频链接:http://pan.baidu.com/s/1bnlpuVH,欢迎下载视频 内容介绍:Scala并发编程中共享线程的使用 (1)在Actor类的act方法中,可以使用react方法来替代receive方法进行消息的处理,使用react方法的好处是可以在一个线程中执行多个Actor的消息处理函数,需要注意的是当react方法接受到的消息匹配到它方法体中的一个偏函数时并进行消息的处理后会导致该react方法的退出,这时一般常常

王家林系列之scala--第69讲:Scala并发编程react、loop代码实战详解

刚才看了一下,群里王家林老师又更新课程了,真为王老师的勤奋感到佩服,于是迫不及待的下载下来观看学习.本期讲的是关于scala并发编程的react.loop代码实战. 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark 关注微信账号,获取更多关于王家林老师的课程内容 王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载! 百度云盘:http://pan.baidu.com/s/1c0noOt6腾讯微云:http://url.cn/TnGbdC

Scala并发编程react、loop代码实战详解

示例代码及注释: //scala并发编程中的react和loop,共同特点: //通过线程存用的方式让性能有所提升. //Actor本身的运行,被actor子系统管理的时候,会有一个或者多个远程的线程让当前的actor使用 //一般情况下每个Actor都有自己的线程.只有有自己的线程时,我们的Actor中的actor方法才会执行. //但是,这样线程的开销会非常大,所以为了共用线程,一个actor使用多个线程后,我们不想立即回收,我们想共用. //scala给我们提供了两个方法:react方法和

Scala 深入浅出实战经典 第67讲:Scala并发编程匿名Actor、消息传递、偏函数解析

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/LwsfuGIsWEk/优酷:http://v.youku.com/v_show/id_

scala并发编程Actor实战

今天在这里跟大家分享下王家林老师讲的scala编程中的actor的并发编程. 在java中,同时进行一个操作的时候,java会先把共享数据锁死,从而避免不同的操作来同时操作一个数据,这个就形成了资源调度的问题,而且如果用不好,还会造成死锁.而在scala中,通过类似消息的发送和接收的队列的方式,来访问同一个共享数据,这样一来,当轮到一个操作来访问某个数据的时候,不会发生另一个操作也同时访问的该数据的情况,这样就避免了资源争用的问题及死锁的发生.下面我们通过一个小小的实例来看看scala是怎样通过

68:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析及其在Spark中的应用源码解析

今天给大家带来的是王家林老师的scala编程讲座的第68讲:Scala并发编程原生线程Actor.Cass Class下的消息传递和偏函数实战解析 昨天讲了Actor的匿名Actor及消息传递,那么我们今天来看一下原生线程Actor及CassClass下的消息传递,让我们从代码出发: case class Person(name:String,age:Int)//定义cass Class class HelloActor extends Actor{//预定义一个Actor  def act()

Scala 深入浅出实战经典 第68讲:Scala并发编程原生线程Actor、Cass Class下的消息传递和偏函数实战解析

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-87讲)完整视频.PPT.代码下载: 百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/mm3eDHk3T5o/优酷:http://v.youku.com/v_show/id