【问题标题】:Scala Akka Actors act() functionScala Akka Actors act() 函数
【发布时间】:2012-07-13 07:56:56
【问题描述】:

我读过的所有教程都是这样工作的:

class HelloWorldActor extends Actor {
  def receive = {
    case "Hello" => self.reply("World")
  }
}

val myActor = system.actorOf(Props[MyActor], name = "myactor")

我想知道 AKKA 是否支持这样的 Actor 类中的 act() 函数:

class HelloWorldActor extends Actor {
  def act() = {

  }
}

然后你可以调用:

val myActor = new HelloWorldActor
myActor.start()

我想这样做是因为我的演员不会收到任何消息。它只是自己工作。那么我可以在我的 AKKA 演员中使用 act() 函数吗?

【问题讨论】:

  • 如果你的actor没有收到任何消息,它会做出什么反应?也许您只需要Future

标签: scala akka


【解决方案1】:

在 Akka 中,您的 actor 应该在使用系统创建后自动启动。但听起来好像你想像使用我们都知道的 Java 中的普通线程一样使用 actor。我会说,从惯用的角度来看,这不是正确的方法。您当然可以只向您的演员添加一条开始消息,在创建后将其发送给演员,然后在处理程序中进行处理。但是,如果您不想对任何消息做出反应,也许您应该考虑使用普通线程或 Future 而不是演员?

【讨论】:

  • 我如何使用普通线程或未来?期货有功能吗?看完教程后我不清楚如何使用未来。
  • 对于普通线程,只需扩展Java Thread 类并实现run() 方法即可。那里有很多例子。对于未来,@Debilski 已经将您链接到一篇解释其用途的文章。查看“直接使用”部分。如果这两种解决方案都不适合您的问题,您应该更详细地描述它。
猜你喜欢
  • 2012-04-24
  • 2013-02-22
  • 2016-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多