Ejecutar asíncrono lambda en el hilo principal?

Ian Rehwinkel:

Tengo algo de código asíncrono en mi proyecto que ejecuta una lambda que toma varios segundos para correr, y ejecuta otra lambda al término de la primera. Algo como esto:

CompletableFuture.supplyAsync(() -> {
    return longExecution("Hello Test");
}).thenAccept(text -> {
    mustBeInMainThread(text);
});

Ahora bien, esto es sólo un ejemplo. Pero necesito la thenAcceptejecución lambda suceda en el hilo principal, y no en un hilo separado.

Es esto posible, y si es así, ¿cómo puedo lograr esto?

ernest_k:

No se puede decir que se ejecute en el hilo principal usando construcciones del futuro, pero se puede obtener el resultado y usarlo:

CompletableFuture<MyObject> future = 
        CompletableFuture.supplyAsync(() -> longExecution("Hello Test"));

//do other things in main thread while async task runs

A continuación, puede utilizar el resultado en el hilo principal de espera:

//get result and call method in main thread:
mustBeInMainThread(future.join());

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=207530&siteId=1
Recomendado
Clasificación