Android APIs
public abstract class

Selector

extends Object
implements Closeable
java.lang.Object
   ↳ java.nio.channels.Selector
Known Direct Subclasses

Class Overview

A controller for the selection of 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.

Summary

Protected Constructors
Selector()
Constructs a new Selector.
Public Methods
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 provider()'s 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 int selectNow()
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 Selector wakeup()
Forces blocked select operations to return immediately.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.io.Closeable
From interface java.lang.AutoCloseable

Protected Constructors

protected Selector ()

Added in API level 1

Constructs a new Selector.

Public Methods

public abstract void close ()

Added in API level 1

Closes this selector. Ongoing calls to the 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.

Throws
IOException if an I/O error occurs.

public abstract boolean isOpen ()

Added in API level 1

Indicates whether this selector is open.

Returns
  • true if this selector is not closed, false otherwise.

public abstract Set<SelectionKey> keys ()

Added in API level 1

Gets the set of registered keys.

The returned set cannot be changed directly but can be modified indirectly by operations on the Selector. It should therefore not be treated as thread-safe.

Returns
  • the set of registered keys.

public static Selector open ()

Added in API level 1

Returns a selector returned by provider()'s openSelector() method.

Throws
IOException if an I/O error occurs.

public abstract SelectorProvider provider ()

Added in API level 1

Gets the provider of this selector.

Returns
  • the provider of this selector.

public abstract int select ()

Added in API level 1

Detects if any of the registered channels is ready for I/O operations according to its interest set. This method does not return until at least one channel is ready, wakeup() is invoked or the calling thread is interrupted.

Returns
  • the number of channels that are ready for operation.
Throws
IOException if an I/O error occurs.
ClosedSelectorException if the selector is closed.

public abstract int select (long timeout)

Added in API level 1

Detects if any of the registered channels is ready for I/O operations according to its 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.

Parameters
timeout the non-negative timeout in millisecond; 0 will block forever if no channels get ready.
Returns
  • the number of channels that are ready for operation.
Throws
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 int selectNow ()

Added in API level 1

Detects if any of the registered channels is ready for I/O operations according to its interest set. This operation will return immediately.

Returns
  • the number of channels that are ready for operation, 0 if none is ready.
Throws
IOException if an I/O error occurrs.
ClosedSelectorException if the selector is closed.

public abstract Set<SelectionKey> selectedKeys ()

Added in API level 1

Gets the selection keys whose channels are ready for operation.

Keys cannot be added to the set directly. Keys can be removed. The set can be modified indirectly by operations on the Selector. It should therefore not be treated as thread-safe.

Returns
  • the selection keys whose channels are ready for operation.
Throws
ClosedSelectorException if the selector is closed.

public abstract Selector wakeup ()

Added in API level 1

Forces blocked 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.

Returns
  • this selector.
Throws
ClosedSelectorException if the selector is closed.