public abstract class Selector extends Object
SelectableChannel
objects.
Selectable channels can be registered with a selector and get a
SelectionKey
that represents the registration. The keys are also
added to the selector's key set. Selection keys can be canceled so that the
corresponding channel is no longer registered with the selector.
By invoking the select
method, the key set is checked and all keys
that have been canceled since last select operation are moved to the set of
canceled keys. During the select operation, the channels registered with this
selector are checked to see whether they are ready for operation according to
their interest set
.
Modifier | Constructor and Description |
---|---|
protected |
Selector()
Constructs a new
Selector . |
Modifier and Type | Method and Description |
---|---|
abstract void |
close()
Closes this selector.
|
abstract boolean |
isOpen()
Indicates whether this selector is open.
|
abstract Set<SelectionKey> |
keys()
Gets the set of registered keys.
|
static Selector |
open()
Returns a selector returned by
SelectorProvider.provider 's
SelectorProvider.openSelector() method. |
abstract SelectorProvider |
provider()
Gets the provider of this selector.
|
abstract int |
select()
Detects if any of the registered channels is ready for I/O operations
according to its
interest set . |
abstract int |
select(long timeout)
Detects if any of the registered channels is ready for I/O operations
according to its
interest set . |
abstract Set<SelectionKey> |
selectedKeys()
Gets the selection keys whose channels are ready for operation.
|
abstract int |
selectNow()
Detects if any of the registered channels is ready for I/O operations
according to its
interest set . |
abstract Selector |
wakeup()
Forces blocked
select operations to return immediately. |
public static Selector open() throws IOException
SelectorProvider.provider
's
SelectorProvider.openSelector()
method.IOException
- if an I/O error occurs.public abstract void close() throws IOException
select
methods of this
selector will get interrupted. This interruption behaves as if the
wakeup()
method of this selector is called. After this, all keys
that are still valid are invalidated and their channels are unregistered.
All resources held by this selector are released.
Any further attempt of using this selector after this method has been
called (except calling close()
or wakeup()
) results in
a ClosedSelectorException
being thrown.
IOException
- if an I/O error occurs.public abstract boolean isOpen()
true
if this selector is not closed, false
otherwise.public abstract Set<SelectionKey> keys()
public abstract SelectorProvider provider()
public abstract int select() throws IOException
interest set
. This method does not
return until at least one channel is ready, wakeup()
is
invoked or the calling thread is interrupted.IOException
- if an I/O error occurs.ClosedSelectorException
- if the selector is closed.public abstract int select(long timeout) throws IOException
interest set
. This method does not
return until at least one channel is ready, wakeup()
is invoked,
the calling thread is interrupted or the specified timeout
expires.timeout
- the non-negative timeout in millisecond; 0 will block forever
if no channels get ready.ClosedSelectorException
- if the selector is closed.IllegalArgumentException
- if the given timeout argument is less than zero.IOException
- if an I/O error occurs.public abstract Set<SelectionKey> selectedKeys()
ClosedSelectorException
- if the selector is closed.public abstract int selectNow() throws IOException
interest set
. This operation will
return immediately.IOException
- if an I/O error occurrs.ClosedSelectorException
- if the selector is closed.public abstract Selector wakeup()
select
operations to return immediately.
If no select
operation is blocked when wakeup()
is called
then the next select
operation will return immediately. This can
be undone by a call to selectNow()
; after calling
selectNow()
, a subsequent call of select
can block
again.
ClosedSelectorException
- if the selector is closed.