Scala并发编程reactloop代码实战具体解释

Posted zsychanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala并发编程reactloop代码实战具体解释相关的知识,希望对你有一定的参考价值。


演示样例代码及凝视:


    //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






以上是关于Scala并发编程reactloop代码实战具体解释的主要内容,如果未能解决你的问题,请参考以下文章

Scala 学习 并发编程模型Akka

scala当中的Actor并发编程

Scala并发编程

Scala最新书籍-《函数式编程科学之Scala实战》pdf级随书代码分享

Java并发编程原理与实战四十五:问题定位总结

大数据学习:Scala隐式转换和并发编程(DT大数据梦工厂)