- 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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedSelectorProvider()初始化此类的新实例。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 ChannelinheritedChannel()返回从创建此Java虚拟机的实体继承的通道。abstract DatagramChannelopenDatagramChannel()打开数据报通道。abstract DatagramChannelopenDatagramChannel(ProtocolFamily family)打开数据报通道。abstract PipeopenPipe()打开烟斗。abstract AbstractSelectoropenSelector()打开选择器。abstract ServerSocketChannelopenServerSocketChannel()打开服务器套接字通道。abstract SocketChannelopenSocketChannel()打开套接字通道。static SelectorProviderprovider()返回此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
-
-