美文网首页
actor概念

actor概念

作者: lehuai | 来源:发表于2018-01-03 16:43 被阅读0次

为什么学习Actor?
    我们现在学的Scala Actor是scala 2.10.x版本及以前版本的Actor。
    Scala在2.11.x版本中将Akka加入其中,作为其默认的Actor,老版本的Actor已经废弃。
    我们学习Actor的目的就是为了学习Akka做铺垫。

什么是Actor?
    Actor是消息并发模型。
    Scala中的Actor能够实现并行编程的强大功能,它是基于事件模型的并发机制。
    Scala是运用消息(message)的发送、接收来实现多线程的。
    使用Scala能够更容易地实现多线程应用的开发。
    
Java并发编程与Scala Actor编程的区别
    Scala的Actor类似于Java中的多线程编程。但是不同的是,Scala的Actor提供的模型与多线程有所不同。
    Scala的Actor尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用的情况,进而提升多线程编程的性能。
    此外,Scala Actor的这种模型还可以避免死锁等一系列传统多线程编程的问题。
    原因就在于Java中多数使用的是可变状态的对象资源,对这些资源进行共享来实现多线程编程的话,
    控制好资源竞争与防止对象状态被意外修改是非常重要的,而对象状态的不变性也是较难以保证的。
    而在Scala中,我们可以通过复制不可变状态的资源(即对象,Scala中一切都是对象,连函数、方法也是)的一个副本,
    再基于Actor的消息发送、接收机制进行并行编程。

Actor方法执行顺序
    1.调用start()方法启动Actor
    2.执行act()方法
    3.向Actor发送消息
    
发送消息的方式
    ! --> 发送异步消息,没有返回值。
    !? --> 发送同步消息,等待返回值。
    !! --> 发送异步消息,返回值是 Future[Any]。

掌握的内容:
    1、创建Actor
    2、Actor的消息接受和发送
    3、用Actor并发编程实现WordCount
ActorDemo.scala
package day05

import scala.actors.Actor

object ActorDemo1 extends Actor{
  // 重写act方法
  override def act(): Unit = {
    for (i <- 1 to 20 ) {
      println("actor1:" + i)
      Thread.sleep(1000)
    }
  }
}
object ActorDemo2 extends Actor{
  override def act(): Unit = {
    for (i <- 1 to 20 ) {
      println("actor2:" + i)
      Thread.sleep(1000)
    }
  }
}

object ActorTest {
  def main(args: Array[String]): Unit = {
    // 启动Actor
    ActorDemo1.start()
    ActorDemo2.start()
  }
}

相关文章

  • UE4之GamePlay

    问题列表 World与Level的概念 Actor的概念 Actor与Component关系 Player, Lo...

  • actor概念

    ActorDemo.scala

  • Actor引用, 路径与地址

    本章描述actor如何被确定,以及在一个可能是分布式的actor系统中如何定位。这与 Actor系统的核心概念有关...

  • actor、reactor与proactor模型

    actor、reactor与proactor模型:高性能服务器的几种模型概念。 actor模型: 实体之通过消息通...

  • actor reactor proactor模型

    actor、reactor与proactor模型:高性能服务器的几种模型概念。 actor模型: 实体之通过消息通...

  • Akka手册译(一)——Actor是什么?

    前一节解释了Actor系统中Actor的层级以及构建应用程序的最小单元。这一节则看单个Actor,解释它的概念并去...

  • AKKA学习笔记

    有两种方式可以获取Actor引用,一是创建Actor,而是查找Actor。 创建Actor 一个actor系统通常...

  • 2017-07-08

    case 0: old actor close new actor() set new actor dxfr...

  • 计算机视觉相关知识

    相关概念(截取自网络上的) 相关链接 https://blog.csdn.net/ice_actor/articl...

  • unreal C++获得 actor 以及component

    1:获得场景里的actor 2:获得场景里直接拖到actor上面的actor 3:获得actor上面的compon...

网友评论

      本文标题:actor概念

      本文链接:https://www.haomeiwen.com/subject/gpahnxtx.html