224 * be examined in order to determine the operations for which each channel is
225 * ready. From each key one can retrieve the corresponding channel in order to
226 * perform whatever I/O operations are required.
227 *
228 * <p> That a selection key indicates that its channel is ready for some operation
229 * is a hint, but not a guarantee, that such an operation can be performed by a
230 * thread without causing the thread to block. It is imperative that code that
231 * performs multiplexed I/O be written so as to ignore these hints when they prove
232 * to be incorrect.
233 *
234 * <p> This package defines selectable-channel classes corresponding to the {@link
235 * java.net.DatagramSocket}, {@link java.net.ServerSocket}, and {@link
236 * java.net.Socket} classes defined in the {@link java.net} package.
237 * Minor changes to these classes have been made in order to support sockets that
238 * are associated with channels. This package also defines a simple class that
239 * implements unidirectional pipes. In all cases, a new selectable channel is
240 * created by invoking the static {@code open} method of the corresponding class.
241 * If a channel needs an associated socket then a socket will be created as a side
242 * effect of this operation.
243 *
244 * <p> The implementation of selectors, selectable channels, and selection keys
245 * can be replaced by "plugging in" an alternative definition or instance of the
246 * {@link java.nio.channels.spi.SelectorProvider} class defined in the {@link
247 * java.nio.channels.spi} package. It is not expected that many developers
248 * will actually make use of this facility; it is provided primarily so that
249 * sophisticated users can take advantage of operating-system-specific
250 * I/O-multiplexing mechanisms when very high performance is required.
251 *
252 * <p> Much of the bookkeeping and synchronization required to implement the
253 * multiplexed-I/O abstractions is performed by the {@link
254 * java.nio.channels.spi.AbstractInterruptibleChannel}, {@link
255 * java.nio.channels.spi.AbstractSelectableChannel}, {@link
256 * java.nio.channels.spi.AbstractSelectionKey}, and {@link
257 * java.nio.channels.spi.AbstractSelector} classes in the {@link
258 * java.nio.channels.spi} package. When defining a custom selector provider,
259 * only the {@link java.nio.channels.spi.AbstractSelector} and {@link
260 * java.nio.channels.spi.AbstractSelectionKey} classes should be subclassed
261 * directly; custom channel classes should extend the appropriate {@link
262 * java.nio.channels.SelectableChannel} subclasses defined in this package.
263 *
|
224 * be examined in order to determine the operations for which each channel is
225 * ready. From each key one can retrieve the corresponding channel in order to
226 * perform whatever I/O operations are required.
227 *
228 * <p> That a selection key indicates that its channel is ready for some operation
229 * is a hint, but not a guarantee, that such an operation can be performed by a
230 * thread without causing the thread to block. It is imperative that code that
231 * performs multiplexed I/O be written so as to ignore these hints when they prove
232 * to be incorrect.
233 *
234 * <p> This package defines selectable-channel classes corresponding to the {@link
235 * java.net.DatagramSocket}, {@link java.net.ServerSocket}, and {@link
236 * java.net.Socket} classes defined in the {@link java.net} package.
237 * Minor changes to these classes have been made in order to support sockets that
238 * are associated with channels. This package also defines a simple class that
239 * implements unidirectional pipes. In all cases, a new selectable channel is
240 * created by invoking the static {@code open} method of the corresponding class.
241 * If a channel needs an associated socket then a socket will be created as a side
242 * effect of this operation.
243 *
244 * <p> {@link java.nio.channels.DatagramChannel},
245 * {@link java.nio.channels.SocketChannel} and
246 * {@link java.nio.channels.ServerSocketChannel}s can be created
247 * with different {@link java.net.ProtocolFamily protocol families}. The standard
248 * family types are specified in {@link java.net.StandardProtocolFamily}.
249 *
250 * <p> Channels for <i>Internet Protocol</i> sockets are created using the
251 * {@link java.net.StandardProtocolFamily#INET INET} or {@link
252 * java.net.StandardProtocolFamily#INET6 INET6} protocol families. <i>Internet
253 * Protocol</i> sockets support network communication using TCP and UDP and are
254 * addressed using {@link java.net.InetSocketAddress}es which encapsulate an IP
255 * address and port number. <i>Internet Protocol</i> sockets are also the default
256 * type created, when a protocol family is not specified in the channel factory
257 * creation method.
258 *
259 * <p> Channels for <a id="unixdomain"></a><i>Unix Domain</i> sockets are created
260 * using the {@link java.net.StandardProtocolFamily#UNIX UNIX} protocol family.
261 * <i>Unix Domain</i> sockets support local inter-process
262 * communication on the same host, and are addressed using {@link
263 * java.net.UnixDomainSocketAddress}es which encapsulate a filesystem pathname
264 * on the local system.
265 *
266 * <p> The implementation of selectors, selectable channels, and selection keys
267 * can be replaced by "plugging in" an alternative definition or instance of the
268 * {@link java.nio.channels.spi.SelectorProvider} class defined in the {@link
269 * java.nio.channels.spi} package. It is not expected that many developers
270 * will actually make use of this facility; it is provided primarily so that
271 * sophisticated users can take advantage of operating-system-specific
272 * I/O-multiplexing mechanisms when very high performance is required.
273 *
274 * <p> Much of the bookkeeping and synchronization required to implement the
275 * multiplexed-I/O abstractions is performed by the {@link
276 * java.nio.channels.spi.AbstractInterruptibleChannel}, {@link
277 * java.nio.channels.spi.AbstractSelectableChannel}, {@link
278 * java.nio.channels.spi.AbstractSelectionKey}, and {@link
279 * java.nio.channels.spi.AbstractSelector} classes in the {@link
280 * java.nio.channels.spi} package. When defining a custom selector provider,
281 * only the {@link java.nio.channels.spi.AbstractSelector} and {@link
282 * java.nio.channels.spi.AbstractSelectionKey} classes should be subclassed
283 * directly; custom channel classes should extend the appropriate {@link
284 * java.nio.channels.SelectableChannel} subclasses defined in this package.
285 *
|