public abstract class SelectorProvider extends Object
选择器提供程序是这个类的一个具体的子类,该类有一零个参数构造函数,并实现了下面指定的抽象方法。一个给定的java虚拟机调用维护一个系统范围的默认提供程序实例,这是由provider
方法返回。该方法的第一次调用将定位为下面指定的默认提供程序。
全系统默认提供程序的静态open方法的DatagramChannel
,Pipe
,Selector
,ServerSocketChannel
使用,和SocketChannel
类。它也是由System.inheritedChannel()
方法。一个程序可以使用非默认的供应商,供应商通过实例化后直接调用该类中定义的方法的open提供者。
在这个类中的所有方法都是安全的,使用多个并发线程。
Modifier | Constructor and Description |
---|---|
protected |
SelectorProvider()
初始化该类的一个新实例。
|
Modifier and Type | Method and Description |
---|---|
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虚拟机。
|
protected SelectorProvider()
SecurityException
如果安全管理器已经安装,它否认
RuntimePermission
("selectorProvider")
public static SelectorProvider provider()
该方法的第一次调用定位默认的提供程序对象如下:
如果系统性能java.nio.channels.spi.SelectorProvider定义则是一个具体的提供程序类的完全限定名。类的加载和实例化;如果这个过程失败,则抛出一个未指定的错误。
如果提供程序类已被安装在一个JAR文件,是系统类加载器可见,和JAR文件包含在资源目录META-INF/services命名java.nio.channels.spi.SelectorProvider供应商的配置文件,然后第一类名称,文件被指定。类的加载和实例化;如果这个过程失败,则抛出一个未指定的错误。
最后,如果没有供应商已由任何上述规定意味着系统默认提供程序类被实例化并返回结果。
随后该方法调用返回的供应商,被第一次调用返回。
public abstract DatagramChannel openDatagramChannel() throws IOException
IOException
如果I/O错误发生
public abstract DatagramChannel openDatagramChannel(ProtocolFamily family) throws IOException
family
的协议族
UnsupportedOperationException
-如果指定的协议不支持
IOException
如果I/O错误发生
public abstract Pipe openPipe() throws IOException
IOException
如果I/O错误发生
public abstract AbstractSelector openSelector() throws IOException
IOException
如果I/O错误发生
public abstract ServerSocketChannel openServerSocketChannel() throws IOException
IOException
如果I/O错误发生
public abstract SocketChannel openSocketChannel() throws IOException
IOException
如果I/O错误发生
public Channel inheritedChannel() throws IOException
在许多操作系统的一个过程,如java虚拟机,可以允许进程从创建过程的实体继承信开始。的方式,这是做是系统依赖性的,因为是可能的实体,该通道可以连接。例如,在UNIX系统中,互联网服务守护进程(inetd)是用来启动程序服务请求时,请求到达相关的网络端口。在这个示例中,启动的过程,继承了一个表示网络套接字的通道。
如果继承通道表示网络套接字通过这个方法返回的Channel
类型确定如下:
如果继承的通道表示面向流的连接插座然后SocketChannel
返回。所说的套接字信道,至少最初是在阻塞模式下,绑定到套接字地址,并连接到对等点上。
如果继承的通道表示面向流的侦听套接字并返回ServerSocketChannel
。服务器套接字通道至少在初始阶段处于阻塞模式,并绑定到套接字地址。
如果继承的频道是一个面向数据报套接字并返回一个DatagramChannel
。数据通道,至少在最初阶段,在阻塞模式,并绑定到一个套接字地址。
除了网络导向的渠道描述,这种方法可能会返回其他类型的渠道在未来。
该方法的第一次调用创建返回的通道。后来这个方法调用返回相同的通道。
IOException
如果I/O错误发生
SecurityException
如果安全管理器已经安装,它否认
RuntimePermission
("inheritedChannel")
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.