这是有效的代码.它向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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的示例使用什么方法future.onSuccess来获取结果而不阻塞当前调用线程?
ses*_*ses 10
啊.这很容易(抱歉).
future.onSuccess(new PrintResult<Object>(), system.dispatcher());
Run Code Online (Sandbox Code Playgroud)
哪里:
public final class PrintResult<T> extends OnSuccess<T> {
@Override public final void onSuccess(T t) {
System.out.println(t);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4218 次 |
| 最近记录: |