- java.lang.Object
-
- java.nio.channels.spi.SelectorProvider
-
public abstract class SelectorProvider extends Object
选择器和可选择通道的服务提供者类。选择器提供程序是该类的具体子类,它具有零参数构造函数,并实现下面指定的抽象方法。 给定的Java虚拟机的调用维护一个系统范围默认的提供者实例,由
provider
方法返回。 该方法的首次调用将定位如下所述的默认提供程序。全系统默认提供由静态使用
open
的方法DatagramChannel
,Pipe
,Selector
,ServerSocketChannel
,并SocketChannel
类。 它也由System.inheritedChannel()
方法使用。 程序可以通过实例化该提供者然后直接调用open
定义的open
方法来使用除默认提供者之外的提供者。此类中的所有方法都可以安全地被多个并发线程使用。
- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
SelectorProvider()
初始化此类的新实例。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 Channel
inheritedChannel()
返回从创建此Java虚拟机的实体继承的通道。abstract DatagramChannel
openDatagramChannel()
打开数据报通道。abstract DatagramChannel
openDatagramChannel(ProtocolFamily family)
打开数据报通道。abstract Pipe
openPipe()
打开管道。abstract AbstractSelector
openSelector()
打开选择器。abstract ServerSocketChannel
openServerSocketChannel()
打开服务器插槽通道。abstract SocketChannel
openSocketChannel()
打开套接字通道。static SelectorProvider
provider()
返回用于Java虚拟机的此调用的系统级默认选择器提供程序。
-
-
-
构造方法详细信息
-
SelectorProvider
protected SelectorProvider()
初始化此类的新实例。- 异常
-
SecurityException
- 如果安全管理器已安装并且它已拒绝RuntimePermission
("selectorProvider")
-
-
方法详细信息
-
provider
public static SelectorProvider provider()
返回用于Java虚拟机的此调用的系统级默认选择器提供程序。此方法的第一次调用将定位默认提供程序对象,如下所示:
如果定义了系统属性
java.nio.channels.spi.SelectorProvider
,则将其视为具体提供程序类的完全限定名称。 该类被加载和实例化; 如果此过程失败,则抛出未指定的错误。如果提供程序类已安装在系统类加载程序可见的jar文件中,并且该jar文件在资源目录
META-INF/services
包含名为java.nio.channels.spi.SelectorProvider
的提供程序配置文件,则将在该文件中指定第一个类名称。 该类被加载和实例化; 如果此过程失败,则抛出未指定的错误。最后,如果没有通过上述任何一种方式指定提供程序,那么系统默认提供程序类将被实例化,并返回结果。
此方法的后续调用返回由第一次调用返回的提供程序。
- 结果
- 系统范围的默认选择器提供程序
-
openDatagramChannel
public abstract DatagramChannel openDatagramChannel() throws IOException
打开数据报通道。- 结果
- 新频道
- 异常
-
IOException
- 如果发生I / O错误
-
openDatagramChannel
public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) throws IOException
打开数据报通道。- 参数
-
family
- 协议族 - 结果
- 一个新的数据报通道
- 异常
-
UnsupportedOperationException
- 如果不支持指定的协议族 -
IOException
- 如果发生I / O错误 - 从以下版本开始:
- 1.7
-
openPipe
public abstract Pipe openPipe() throws IOException
打开管道。- 结果
- 新的管道
- 异常
-
IOException
- 如果发生I / O错误
-
openSelector
public abstract AbstractSelector openSelector() throws IOException
打开选择器。- 结果
- 新的选择器
- 异常
-
IOException
- 如果发生I / O错误
-
openServerSocketChannel
public abstract ServerSocketChannel openServerSocketChannel() throws IOException
打开服务器插槽通道。- 结果
- 新频道
- 异常
-
IOException
- 如果发生I / O错误
-
openSocketChannel
public abstract SocketChannel openSocketChannel() throws IOException
打开套接字通道。- 结果
- 新频道
- 异常
-
IOException
- 如果发生I / O错误
-
inheritedChannel
public Channel inheritedChannel() throws IOException
返回从创建此Java虚拟机的实体继承的通道。在许多操作系统上,可以以允许进程从创建该进程的实体继承一个通道的方式启动诸如Java虚拟机的进程。 这样做的方式是系统依赖的,通道可能连接到的可能实体也是如此。 例如,在UNIX系统上,当请求到达相关联的网络端口时,Internet服务守护程序( inetd )用于启动程序来服务请求。 在此示例中,启动的进程继承代表网络套接字的通道。
在继承的通道表示网络套接字的情况下,此方法返回的
Channel
类型的确定如下:如果继承的通道表示面向流的连接套接字,则返回一个
SocketChannel
。 套接字通道至少最初处于阻塞模式,绑定到套接字地址,并连接到对等体。如果继承的通道表示一个面向流的侦听套接字,则返回一个
ServerSocketChannel
。 服务器套接字通道至少最初处于阻塞模式,并绑定到套接字地址。如果继承的通道是面向数据包的套接字,则返回一个
DatagramChannel
。 数据报信道至少最初处于阻塞模式,并绑定到套接字地址。
除了描述的面向网络的渠道之外,这种方法可能会在将来返回其他类型的频道。
此方法的第一次调用将创建返回的通道。 此方法的后续调用返回相同的通道。
- 结果
-
继承的渠道,如果有,否则
null
。 - 异常
-
IOException
- 如果发生I / O错误 -
SecurityException
- 如果安全管理器已安装,并且它已拒绝RuntimePermission
("inheritedChannel")
- 从以下版本开始:
- 1.5
-
-