|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.nio.channels.spi
类 SelectorProvider
java.lang.Object java.nio.channels.spi.SelectorProvider
-
public abstract class SelectorProvider
- extends Object
用于选择器和可选择通道的服务提供程序类。
选择器提供程序是此类的一个具体子类,它具有零参数的构造方法,并实现了以下指定的抽象方法。给定的对 Java 虚拟机的调用维护了单个系统级的默认提供程序实例,它由 provider
方法返回。第一次调用该方法将查找以下指定的默认提供程序。
系统级的默认提供程序由 DatagramChannel
、Pipe
、Selector
、ServerSocketChannel
和 SocketChannel
类的静态 open 方法使用。System.inheritedChannel()
方法也使用它。除了默认提供程序之外,程序还可以使用其他提供程序,方法是通过实例化一个提供程序,然后直接调用此类中定义的 open 方法。
多个并发线程可安全地使用此类中的所有方法。
- 从以下版本开始:
- 1.4
构造方法摘要 | |
---|---|
protected |
SelectorProvider() 初始化此类的一个新实例。 |
方法摘要 | |
---|---|
Channel |
inheritedChannel() 返回从创建此 Java 虚拟机的实体中继承的通道。 |
abstract DatagramChannel |
openDatagramChannel() 打开数据报通道。 |
abstract Pipe |
openPipe() 打开一个管道。 |
abstract AbstractSelector |
openSelector() 打开一个选择器。 |
abstract ServerSocketChannel |
openServerSocketChannel() 打开服务器套接字通道。 |
abstract SocketChannel |
openSocketChannel() 打开套接字通道。 |
static SelectorProvider |
provider() 返回此次调用 Java 虚拟机的系统级默认选择器提供程序。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
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
openPipe
public abstract Pipe openPipe() throws IOException
- 打开一个管道。
-
- 返回:
- 新管道
- 抛出:
-
IOException
openSelector
public abstract AbstractSelector openSelector() throws IOException
- 打开一个选择器。
-
- 返回:
- 新的选择器
- 抛出:
-
IOException
openServerSocketChannel
public abstract ServerSocketChannel openServerSocketChannel() throws IOException
- 打开服务器套接字通道。
-
- 返回:
- 新的通道
- 抛出:
-
IOException
openSocketChannel
public abstract SocketChannel openSocketChannel() throws IOException
- 打开套接字通道。
-
- 返回:
- 新的通道
- 抛出:
-
IOException
inheritedChannel
public Channel inheritedChannel() throws IOException
-
返回从创建此 Java 虚拟机的实体中继承的通道。
在很多操作系统上可以通过下列方式启动某个进程(如 Java 虚拟机):即允许该进程从创建该进程的实体上继承一个通道。正如连接到通道的可能实体一样,完成此继承的方式与系统相关。例如,在 UNIX 系统上,当请求到达关联的网络端口时,使用 Internet 服务守护程序 (inetd) 启动程序来服务该请求。在本例中,所启动的进程继承了一个表示网络套接字的通道。
在所继承的通道表示网络套接字的情况下,以如下方式确定此方法所返回的
Channel
类型:如果继承的通道表示一个面向流的已连接套接字,则返回
SocketChannel
。该套接字通道是处于(至少最初是)阻塞模式的、已绑定到套接字地址,并且已连接到同位体。如果继承的通道表示一个面向流的侦听套接字,则返回
ServerSocketChannel
。该服务器套接字通道处于(至少最初是)阻塞模式,并且已绑定到套接字地址,如果继承的通道表示一个面向数据报的套接字,则返回
DatagramChannel
。该数据报通道处于(至少最初是)阻塞模式,并且已绑定到套接字地址,
除了已描述的面向网络的通道之外,此方法以后还可能返回其他类型的通道。
首次调用此方法会创建所返回的通道。后续调用此方法会返回相同的通道。
-
- 返回:
- 继承的通道(如果有),否则返回 null。
- 抛出:
-
IOException
- 如果发生 I/O 错误 -
SecurityException
- 如果已安装安全管理器并且它拒绝RuntimePermission
("inheritedChannel") - 从以下版本开始:
- 1.5