Fiber API questions
Alan Bateman
Alan.Bateman at oracle.com
Mon Oct 29 08:29:15 UTC 2018
On 27/10/2018 16:59, Fabio Tudone wrote:
> Hi, I have some questions about the current "Fiber" API:
>
> - Why the constructors accepts only a "Runnable" and not a "Callable"?
> - Why on the other hand the static "Fiber#schedule" method doesn't return a
> "Fiber" but rather a "CompletableFuture"?
>
> This allows "Fiber" to avoid being generic (is there a specific reason for
> that BTW?) but it forces the user to choose between getting back a "Fiber"
> reference and being able to throw checked exceptions in the fiber code.
The Fibers API is currently very minimal and will likely to go through
many iterations over the coming months. Yes, you can create a Fiber to
execute a task expressed as a Runnable. There is no result to return
through the API, instead it will communicate via a channel or other
means. You are right that checked exceptions may be awkward but changing
it to Callable and forcing return null is awkward too. I haven't seen
calls for a functional interface between Runnable and Callable that
returns void and throws Exception and I hope we can avoid that. When we
get to structured concurrency there is potential to propagate exceptions
to whoever scheduled the fiber so we potentially get into the checked
vs. runtime exceptions issues then. The static schedule methods are for
creating/scheduling fibers that execute a task that yield a result. I
can't tell if you are looking for it to return the more general
Future<V> instead CompletableFuture<V> or expecting Fiber to implement
Future. In any case, you shouldn't need a reference to the Fiber object
in this case.
-Alan
More information about the loom-dev
mailing list