Most visited

Recently visited

Added in API level 1

SelectorProvider

public abstract class SelectorProvider
extends Object

java.lang.Object
   ↳ java.nio.channels.spi.SelectorProvider


选择器和可选频道的服务提供者类。

选择器提供者是该类的具体子类,它具有零参数构造函数并实现下面指定的抽象方法。 给定的Java虚拟机调用维护一个系统范围的默认提供程序实例,该实例由provider方法返回。 该方法的第一次调用将按照以下指定的方式找到默认提供程序。

全系统默认提供由静态open种方法使用DatagramChannelPipeSelectorServerSocketChannel ,并SocketChannel类。 它也被System.inheritedChannel()方法使用。 程序可以通过实例化该提供程序,然后直接调用此类中定义的方法来使用默认提供程序以外的提供程序。

该类中的所有方法都可以安全地用于多个并发线程。

Summary

Protected constructors

SelectorProvider()

初始化此类的新实例。

Public methods

Channel inheritedChannel()

返回从创建此Java虚拟机的实体继承的通道。

abstract DatagramChannel openDatagramChannel(ProtocolFamily family)

打开数据报通道。

abstract DatagramChannel openDatagramChannel()

打开数据报通道。

abstract Pipe openPipe()

打开管道。

abstract AbstractSelector openSelector()

打开选择器。

abstract ServerSocketChannel openServerSocketChannel()

打开服务器套接字通道。

abstract SocketChannel openSocketChannel()

打开套接字通道。

static SelectorProvider provider()

返回此次调用Java虚拟机的系统范围默认选择器提供程序。

Inherited methods

From class java.lang.Object

Protected constructors

SelectorProvider

Added in API level 1
SelectorProvider ()

初始化此类的新实例。

Throws
SecurityException If a security manager has been installed and it denies RuntimePermission("selectorProvider")

Public methods

inheritedChannel

Added in API level 1
Channel inheritedChannel ()

返回从创建此Java虚拟机的实体继承的通道。

在许多操作系统上,可以启动进程(如Java虚拟机)的方式允许进程从创建进程的实体继承通道。 这样做的方式取决于系统,信道可能连接到的可能实体也是如此。 例如,在UNIX系统上,当请求到达关联的网络端口时,Internet服务守护进程( inetd )用于启动程序来为请求提供服务。 在这个例子中,启动的进程继承了一个代表网络套接字的通道。

在继承通道表示网络套接字的情况下,由此方法返回的 Channel类型按以下方式确定:

  • 如果继承的频道表示面向流的连接套接字,则返回SocketChannel 套接字通道至少在开始时处于阻塞模式,绑定到套接字地址并连接到对等端。

  • 如果继承的通道表示面向流的侦听套接字,则返回ServerSocketChannel 服务器套接字通道至少在最初处于阻塞模式,并绑定到套接字地址。

  • 如果继承的通道是面向数据报的套接字,则返回DatagramChannel 数据报通道至少在最初处于阻塞模式,并绑定到套接字地址。

除了描述的面向网络的频道之外,这种方法可能会在未来返回其他种类的频道。

此方法的第一次调用将创建返回的通道。 此方法的后续调用返回相同的通道。

Returns
Channel The inherited channel, if any, otherwise null.
Throws
IOException If an I/O error occurs
SecurityException If a security manager has been installed and it denies RuntimePermission("inheritedChannel")

openDatagramChannel

Added in API level 24
DatagramChannel openDatagramChannel (ProtocolFamily family)

打开数据报通道。

Parameters
family ProtocolFamily: The protocol family
Returns
DatagramChannel A new datagram channel
Throws
UnsupportedOperationException If the specified protocol family is not supported
IOException If an I/O error occurs

openDatagramChannel

Added in API level 1
DatagramChannel openDatagramChannel ()

打开数据报通道。

Returns
DatagramChannel The new channel
Throws
IOException

openPipe

Added in API level 1
Pipe openPipe ()

Opens a pipe.

Returns
Pipe The new pipe
Throws
IOException

openSelector

Added in API level 1
AbstractSelector openSelector ()

打开选择器。

Returns
AbstractSelector The new selector
Throws
IOException

openServerSocketChannel

Added in API level 1
ServerSocketChannel openServerSocketChannel ()

打开服务器套接字通道。

Returns
ServerSocketChannel The new channel
Throws
IOException

openSocketChannel

Added in API level 1
SocketChannel openSocketChannel ()

Opens a socket channel.

Returns
SocketChannel The new channel
Throws
IOException

provider

Added in API level 1
SelectorProvider provider ()

返回此次调用Java虚拟机的系统范围默认选择器提供程序。

这个方法的第一次调用定位默认提供者对象,如下所示:

  1. 如果定义了系统属性java.nio.channels.spi.SelectorProvider ,那么它将被视为具体提供者类的完全限定名称。 该类被加载并实例化; 如果此过程失败,则会引发未指定的错误。

  2. 如果提供程序类已安装在系统类加载程序可见的jar文件中,并且该jar文件包含资源目录META-INF/services中名为java.nio.channels.spi.SelectorProvider的提供程序配置文件,则会在该文件中指定第一个类名称。 该类被加载并实例化; 如果此过程失败,则会引发未指定的错误。

  3. 最后,如果没有提供者被任何上述方法指定,那么系统默认的提供者类将被实例化并返回结果。

此方法的后续调用返回第一次调用返回的提供程序。

Returns
SelectorProvider The system-wide default selector provider

Hooray!