6

これが機能するコードです。Actor (Greeter) にメッセージを送信し、応答を待ちます。しかし、それは現在のスレッドをブロックします。

public class Future1Blocking {

    public static void main(String[] args) throws Exception {

        ActorSystem system = ActorSystem.create("system");
        final ActorRef actorRef = system.actorOf(Props.create(Greeter.class), "greeter");

        Timeout timeout = new Timeout(Duration.create(5, "seconds"));
        Future<Object> future = Patterns.ask(actorRef, Greeter.Msg.GREET, timeout);

        // this blocks current running thread
        Greeter.Msg result = (Greeter.Msg) Await.result(future, timeout.duration());

        System.out.println(result);

    }
}

future.onSuccess現在の呼び出しスレッドをブロックせずに結果を取得するために私の例で使用できる方法は何ですか?

4

1 に答える 1