* deprecates awaitTermination, shutdown and isTerminated * introduces a terminate-method that returns a Future[Unit] * introduces a whenTerminated-method that returns a Future[Unit] * simplifies the implementation by removing blocking constructs * adds tests for terminate() and whenTerminated
28 lines
763 B
Java
28 lines
763 B
Java
package sample.hello;
|
|
|
|
import akka.actor.*;
|
|
import akka.japi.pf.ReceiveBuilder;
|
|
|
|
public class Main2 {
|
|
|
|
public static void main(String[] args) {
|
|
ActorSystem system = ActorSystem.create("Hello");
|
|
ActorRef a = system.actorOf(Props.create(HelloWorld.class), "helloWorld");
|
|
system.actorOf(Props.create(Terminator.class, a), "terminator");
|
|
}
|
|
|
|
public static class Terminator extends AbstractLoggingActor {
|
|
|
|
private final ActorRef ref;
|
|
|
|
public Terminator(ActorRef ref) {
|
|
this.ref = ref;
|
|
getContext().watch(ref);
|
|
receive(ReceiveBuilder.
|
|
match(Terminated.class, t -> {
|
|
log().info("{} has terminated, shutting down system", ref.path());
|
|
context().system().terminate();
|
|
}).build());
|
|
}
|
|
}
|
|
}
|