|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.nio.channels.spi.SelectorProvider
public abstract class SelectorProvider
用於選擇器和可選擇通道的服務提供者類別。
選擇器提供者是此類別的一個具體子類別,它具有零參數的建構子,並實作了以下指定的抽象方法。給定的對 Java 虛擬機器的調用維護了單個系統級的預設提供者實例,它由 provider
方法返回。第一次調用該方法將尋找以下指定的預設提供者。
系統級的預設提供者由 DatagramChannel
、Pipe
、Selector
、ServerSocketChannel
和 SocketChannel
類別的靜態 open 方法使用。System.inheritedChannel()
方法也使用它。除了預設提供者之外,程序還可以使用其他提供者,方法是通過實例化一個提供者,然後直接調用此類別中定義的 open 方法。
多個共時執行緒可安全地使用此類別中的所有方法。
建構子摘要 | |
---|---|
protected |
SelectorProvider()
初始化此類別的一個新實例。 |
方法摘要 | |
---|---|
Channel |
inheritedChannel()
返回從創建此 Java 虛擬機器的實體中繼承的通道。 |
abstract DatagramChannel |
openDatagramChannel()
打開資料電報通道。 |
abstract Pipe |
openPipe()
打開一個管道。 |
abstract AbstractSelector |
openSelector()
打開一個選擇器。 |
abstract ServerSocketChannel |
openServerSocketChannel()
打開伺服器Socket通道。 |
abstract SocketChannel |
openSocketChannel()
打開Socket通道。 |
static SelectorProvider |
provider()
返回此次調用 Java 虛擬機器的系統級預設選擇器提供者。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
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
public abstract Pipe openPipe() throws IOException
IOException
public abstract AbstractSelector openSelector() throws IOException
IOException
public abstract ServerSocketChannel openServerSocketChannel() throws IOException
IOException
public abstract SocketChannel openSocketChannel() throws IOException
IOException
public Channel inheritedChannel() throws IOException
在很多作業系統上可以通過下列方式啟動某個進程(如 Java 虛擬機器):即允許該進程從創建該進程的實體上繼承一個通道。正如連接到通道的可能實體一樣,完成此繼承的方式與系統相關。例如,在 UNIX 系統上,當請求到達關聯的網路埠號時,使用 Internet 服務守護程序 (inetd) 啟動程序來服務該請求。在本例中,所啟動的進程繼承了一個表示網路Socket的通道。
在所繼承的通道表示網路Socket的情況下,以如下方式確定此方法所返回的 Channel
型別:
如果繼承的通道表示一個導向串流的已連接Socket,則返回 SocketChannel
。該Socket通道是處於(至少最初是)阻塞網要的、已綁定到Socket位址,並且已連接到同位體。
如果繼承的通道表示一個導向串流的偵聽Socket,則返回 ServerSocketChannel
。該伺服器Socket通道處於(至少最初是)阻塞網要,並且已綁定到Socket位址,
如果繼承的通道表示一個導向資料電報的Socket,則返回 DatagramChannel
。該資料電報通道處於(至少最初是)阻塞網要,並且已綁定到Socket位址,
除了已描述的導向網路的通道之外,此方法以後還可能返回其他型別的通道。
首次調用此方法會創建所返回的通道。後續調用此方法會返回相同的通道。
IOException
- 如果發生 I/O 錯誤
SecurityException
- 如果已安裝安全管理器並且它拒絕 RuntimePermission
("inheritedChannel")
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。