Java 8's promise implementation, namely CompletableFuture
, provides both thenApply(...)
and get()
methods.
Where get()
waits if necessary for the promise to complete, and then returns its result.
Now assume we use thenApply(...)
(or thenApplyAsync(...)
) to chain some code to run on UI-thread
(see stackoverflow.com/difference between thenApply and thenApplyAsync).
What is the behaviour if we call get()
in the UI-thread as well, like does Java handle this case somehow, or can it result to a so-called dead-lock or infinite-loop?
I previously was using Qt framework, where depending on how we did implement waiter (dispatch-UI-events vs sleep
), it was possible to wait for UI-thread from within same UI-thread (for example, the entire view came back to live, and that without returning from my code).
But I am not sure if Java even supports that.