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  访问密码45e2

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 04:02:31

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

王家林系列之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实战(视频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方法的退出,这时一般常常

第52讲:Scala中路径依赖代码实战详解

<DT大数据梦工厂>大数据实战视频"Scala深入浅出实战经典"视频.音频和PPT下载!第52讲:Scala中路径依赖代码实战详解百度云:http://pan.baidu.com/s/1gdES4hX360云盘:http://yunpan.cn/ccHXX2Wkrrrt4 访问密码 c489腾讯微云:http://url.cn/VV5kx5 记录: Scala中内部类的路径依赖非常适合现在互联网看待事物所属关系,组织关系. 根据依赖的外部实例的不同,内部类类型会有所不同.由

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

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

Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解

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

java并发编程(七)synchronized详解

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.     一.当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块.      二.然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(thi

Scala中隐式对象代码实战详解之Scala学习笔记-54

package com.leegh.implicits /** * @Tuthor Guohui Li */abstract class Template[T] { def add(x: T, y: T): T} abstract class SubTemplate[T] extends Template[T] { def unit: T} object Implicits_Object { def main(args: Array[String]): Unit = { implicit obj