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!