JavaTM 2 Platform
Standard Ed. 6

java.nio.channels.spi
類別 SelectorProvider

java.lang.Object
  繼承者 java.nio.channels.spi.SelectorProvider

public abstract class SelectorProvider
extends Object

用於選擇器和可選擇通道的服務提供者類別。

選擇器提供者是此類別的一個具體子類別,它具有零參數的建構子,並實作了以下指定的抽象方法。給定的對 Java 虛擬機器的調用維護了單個系統級的預設提供者實例,它由 provider 方法返回。第一次調用該方法將尋找以下指定的預設提供者。

系統級的預設提供者由 DatagramChannelPipeSelectorServerSocketChannelSocketChannel 類別的靜態 open 方法使用。System.inheritedChannel() 方法也使用它。除了預設提供者之外,程序還可以使用其他提供者,方法是通過實例化一個提供者,然後直接調用此類別中定義的 open 方法。

多個共時執行緒可安全地使用此類別中的所有方法。

從以下版本開始:
1.4

建構子摘要
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
 

建構子詳細資訊

SelectorProvider

protected SelectorProvider()
初始化此類別的一個新實例。

拋出:
SecurityException - 如果已安裝安全管理器並且它拒絕 RuntimePermission("selectorProvider")
方法詳細資訊

provider

public static SelectorProvider provider()
返回此次調用 Java 虛擬機器的系統級預設選擇器提供者。

首次調用此方法會按如下方式尋找預設的提供者物件:

  1. 如果定義了系統屬性 java.nio.channels.spi.SelectorProvider,則將該屬性名看作具體提供者類別的完全限定名。載入並實例化該類別;如果此進程失敗,則拋出未指定的錯誤。

  2. 如果在對系統類別載入器可見的 jar 檔案中安裝了提供者類別,並且該 jar 檔案包含資源目錄 META-INF/services 中名為 java.nio.channels.spi.SelectorProvider 的提供者配置檔案,則採用在該檔案中指定的第一個類別名稱。載入並實例化該類別;如果此進程失敗,則拋出未指定的錯誤。

  3. 最後,如果未通過上述任意方式指定任何提供者,則實例化系統預設的提供者類別並返回該結果。

後續調用此方法會返回首次調用此方法時所返回的提供者。

返回:
系統級預設選擇器提供者

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
打開伺服器Socket通道。

返回:
新的通道
拋出:
IOException

openSocketChannel

public abstract SocketChannel openSocketChannel()
                                         throws IOException
打開Socket通道。

返回:
新的通道
拋出:
IOException

inheritedChannel

public Channel inheritedChannel()
                         throws IOException
返回從創建此 Java 虛擬機器的實體中繼承的通道。

在很多作業系統上可以通過下列方式啟動某個進程(如 Java 虛擬機器):即允許該進程從創建該進程的實體上繼承一個通道。正如連接到通道的可能實體一樣,完成此繼承的方式與系統相關。例如,在 UNIX 系統上,當請求到達關聯的網路埠號時,使用 Internet 服務守護程序 (inetd) 啟動程序來服務該請求。在本例中,所啟動的進程繼承了一個表示網路Socket的通道。

在所繼承的通道表示網路Socket的情況下,以如下方式確定此方法所返回的 Channel 型別:

除了已描述的導向網路的通道之外,此方法以後還可能返回其他型別的通道。

首次調用此方法會創建所返回的通道。後續調用此方法會返回相同的通道。

返回:
繼承的通道(如果有),否則返回 null
拋出:
IOException - 如果發生 I/O 錯誤
SecurityException - 如果已安裝安全管理器並且它拒絕 RuntimePermission("inheritedChannel")
從以下版本開始:
1.5

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only