- 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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
SelectorProvider()
初始化此类的新实例。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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
-
-