第67讲 Scala并发编程 中的actor

谈到并发编程,大家都会想到 用java 的多线程来实现,因为大家知道java的 数据共享 和锁机制,能够支持 并发。 但是随着业务的膨胀, java的这种机制,对开发者的要求越来越高。 针对java的这些缺点,scala 使用 消息传递的方式来处理。每个消息发送者,都持有一个 mail, 消息接受者不停的轮询,从而避免数据的共享。

从实现上, scala 只需要 继承 actor 类,如:

object First_Actor extends Actor{//第一个线程
     def act(){
         for(i<-1 to 10){
           println("Step: "+i)
          Thread.sleep(2000)
}
}
}

object Second_Actor extends Actor{//第二个线程
     def act(){
         for(i<-1 to 10){
       println("Step Further: "+i)
       Thread.sleep(2000)
}
}
}

main{
   First_Actor.start
   Second_Actor.start
}

上面的讲的有名字的actor ,当有时需要临时的acotor 时,我们可以这么做,如下:

import scala.actors.Actor._
object Actor_Messages {
  def main(args: Array[String]) {
    val actor_message = actor{
       while(true){
          receive{
            case msg => println("message content from inbox:" + msg)
          }
       }
    }
    val double_actor_message = actor{
      while(true){
        receive{
          case msg:Double => println("Double from inbox:" + msg)
          case _ =>
        }
      }
    }

    actor_message ! "spark"
    double_actor_message! Math.PI
  }
}

直接 使用 scala.actors.Actor._scala.actors.Actor.actor 对象,并且不需要 调用start方法

参考资料

百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group
DT大数据梦工厂交流群:462923555
DT大数据微信公众账号:DT_Spark

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值