本文概述
- Akka Actor示例:使用Props
- Akka Actor示例2:使用Props
你可以通过导入akka.actor.Props包来实现Props。
你可以通过将Props实例传递到ActorSystem和ActorContext中可用的actorOf()工厂方法来创建actor。 actorOf()方法返回ActorRef的实例。该实例是不可变的, 并且与它所代表的演员具有一对一的关系。 ActorRef也可序列化, 因此你可以对其进行序列化。
在下面的示例中, 我们将使用Props创建一个Actor。
Akka Actor示例:使用Props
import akka.actor.Actor;
import akka.actor.ActorSystem;
import akka.actor.Props;
class PropsExample extends Actor {
def receive= {
case msg:String =>
println(msg+" "+self.path.name)
}
}
object PropsMain{
def main(args:Array[String]){
var actorSystem = ActorSystem("ActorSystem");
var actor = actorSystem.actorOf(Props[PropsExample], "PropExample");
actor ! "Hello from"
}
}
输出
Hello from PropExample
还有多种其他方式来实现Props。让我们来看一个例子。
Akka Actor示例2:使用Props
import akka.actor._
class CreatingActor extends Actor{
def receive = {
case msg:String =>
println(msg+" "+self.path.name)// Receiving message and name of actor
}
}object CreatingActorExample{
def main(args:Array[String]){
var actorSystem = ActorSystem("ActorSystem");
var props1 = Props[CreatingActor];
// creating pops here
var actor1 = actorSystem.actorOf(props1);
// passing pops reference
var actor2 = actorSystem.actorOf(Props[CreatingActor], "Actor2")// Passing pops and explicitly giving name to the actor
var actor3 = actorSystem.actorOf(Props(classOf[CreatingActor]), "Actor3")// Passing actor class by using classOf
var actor4 = actorSystem.actorOf(Props[CreatingActor], name = "Actor4")// Name passing to variable
var actor5 = actorSystem.actorOf(Props(new CreatingActor()), name = "Actor5") // This approach is not recommended
actor1 ! "Hello"
actor2 ! "Hello"
actor3 ! "Hello"
actor4 ! "Hello"
actor5 ! "Hello"
}
}
如果没有明确给出名称, 它将自动生成。
【Akka Props用法示例详解】输出
Hello $a// Reference of the name of actor
Hello Actor2
Hello Actor4
Hello Actor3
Hello Actor5
推荐阅读
- Akka终止Actor用法示例详解
- Akka子Actor用法示例
- Akka Actor生命周期解释和示例详解
- Akka Actor发送消息示例详解
- Hbuilder X在Android app开发上真机调试的使用
- Android File存储:文件读写
- Android File存储(文件的存储路径)
- ORM框架--Dapper
- Android开发(JavaDoc注释插件简单使用介绍)