Package io.javago
Interface Channel<T>
- Type Parameters:
T
- the type of messages handled by the channel
- All Superinterfaces:
AutoCloseable
,InputChannel<T>
,Iterable<T>
,OutputChannel<T>
- All Known Implementing Classes:
BufferedQueueChannel
The
Channel
interface defines the operations to create Go's channel
in Java that can send and receive
messages of a specified type.
It extends AutoCloseable
to support resource management and Iterable
to allow for iteration over the
messages in the channel.-
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Closes the channel.boolean
hasNext()
Waits until the channel has another message.boolean
hasSpace()
Waits until the channel has space for another message or is closed.boolean
isClosed()
Checks if the channel is closed.boolean
isEmpty()
Checks if the channel is empty.boolean
isFull()
Checks if the channel is full.static <T> Channel
<T> make()
Creates a new channel with a default capacity.static <T> Channel
<T> make
(int capacity) Creates a new channel with the specified capacity.receive()
Receives a message from the channel, waiting if necessary for a message to be sent.void
Sends a message through the channel, waiting if necessary for space to become available.Methods inherited from interface java.lang.Iterable
forEach, iterator, spliterator
-
Method Details
-
send
Sends a message through the channel, waiting if necessary for space to become available.- Specified by:
send
in interfaceOutputChannel<T>
- Parameters:
message
- the message to be sent- Throws:
IllegalStateException
- if the channel
-
receive
T receive()Receives a message from the channel, waiting if necessary for a message to be sent.- Specified by:
receive
in interfaceInputChannel<T>
- Returns:
- the received message
- Throws:
NoSuchElementException
- if the channel is both closed and empty
-
isClosed
boolean isClosed()Checks if the channel is closed.- Specified by:
isClosed
in interfaceInputChannel<T>
- Specified by:
isClosed
in interfaceOutputChannel<T>
- Returns:
true
if the channel is closed,false
otherwise
-
close
void close()Closes the channel. Once closed, no more messages can be sent, but any remaining messages can still be received. Closing an already closed channel has no effect.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceInputChannel<T>
- Specified by:
close
in interfaceOutputChannel<T>
-
isEmpty
boolean isEmpty()Checks if the channel is empty.- Specified by:
isEmpty
in interfaceInputChannel<T>
- Specified by:
isEmpty
in interfaceOutputChannel<T>
- Returns:
true
if the channel is empty,false
otherwise
-
isFull
boolean isFull()Checks if the channel is full.- Specified by:
isFull
in interfaceInputChannel<T>
- Specified by:
isFull
in interfaceOutputChannel<T>
- Returns:
true
if the channel is full,false
otherwise
-
hasSpace
boolean hasSpace()Waits until the channel has space for another message or is closed.- Specified by:
hasSpace
in interfaceInputChannel<T>
- Specified by:
hasSpace
in interfaceOutputChannel<T>
- Returns:
true
if the channel has space,false
if the channel is closed
-
hasNext
boolean hasNext()Waits until the channel has another message.- Specified by:
hasNext
in interfaceInputChannel<T>
- Specified by:
hasNext
in interfaceOutputChannel<T>
- Returns:
true
if there are more messages,false
if the channel is both closed and empty.
-
make
Creates a new channel with a default capacity.- Type Parameters:
T
- the type of messages handled by the channel- Returns:
- a new
Channel
instance
-
make
Creates a new channel with the specified capacity.- Type Parameters:
T
- the type of messages handled by the channel- Parameters:
capacity
- the capacity of the channel- Returns:
- a new
Channel
instance with the specified capacity
-