`select` statement for Java

Doug Lea dl at cs.oswego.edu
Tue Feb 4 00:32:29 UTC 2020

On 2/3/20 1:38 PM, Ryan Schmitt wrote:
> Are there any current or planned constructs in Java that allow blocking on
> multiple streams of events simultaneously, similar to the `select`
> statement in Go? I realize that technically speaking this is probably
> orthogonal to Loom, but it seems like an important capability in order to
> get the most out of the blocking, imperative thread abstraction that Loom
> is fundamentally about.

Yes. We've been contemplating adding to java.util.concurrent a
Loom-friendly channel-like component with select-like capabilities. I
hope to write more about this in the coming months when it gets concrete
enough to ask for feedback. For now: the most likely name is "Carrier",
to distinguish from other channels and queues in Java.

As others have noted, there's not likely to be special syntax, but the
new pattern-match constructs should serve well. As in:
switch(selector.receive()) { case Request r -> service(r); ... }


More information about the loom-dev mailing list