|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.nio.channels.spi.AbstractInterruptibleChannel
public abstract class AbstractInterruptibleChannel
可中斷通道的基本實作類別。
此類別封裝了實作通道非同步關閉和中斷所需的低層級別機制。在調用可能無限期阻塞的 I/O 操作之前和之後,具體的通道類別必須分別調用 具體的通道類別還必須實作 此類別執行實作
begin
和 end
方法。為了確保始終能夠調用 end
方法,應該在 try ... finally 塊中使用這些方法:
boolean completed = false;
try {
begin();
completed = ...; // Perform blocking I/O operation
return ...; // Return result
} finally {
end(completed);
}
end
方法的 completed 參數告知 I/O 操作實際是否已完成,也就是說它是否有任何對調用者可見的效果。例如,在讀取位元組的操作中,當且僅當確實將某些位元組傳輸到調用者的目標緩衝區時此參數才應該為 true。
implCloseChannel
方法,其方式為:如果調用此方法的同時,另一個執行緒阻塞在該通道上的本機 I/O 操作中,則該操作將立即返回,要麼拋出異常,要麼正常返回。如果某個執行緒被中斷,或者非同步地關閉了阻塞執行緒所處的通道,則該通道的 end
方法會拋出相應的異常。
Channel
規範所需的同步。implCloseChannel
方法的實作不必與其他可能試圖關閉通道的執行緒同步。
建構子摘要 | |
---|---|
protected |
AbstractInterruptibleChannel()
初始化此類別的一個新實例。 |
方法摘要 | |
---|---|
protected void |
begin()
標記可能無限期阻塞的 I/O 操作的開始。 |
void |
close()
關閉此通道。 |
protected void |
end(boolean completed)
標記可能無限期阻塞的 I/O 操作的結尾。 |
protected abstract void |
implCloseChannel()
關閉此通道。 |
boolean |
isOpen()
判斷此通道是否處於打開狀態。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
protected AbstractInterruptibleChannel()
方法詳細資訊 |
---|
public final void close() throws IOException
如果已關閉該通道,則此方法立即返回。否則它會將該通道標記為已關閉,然後調用 implCloseChannel
方法以完成關閉操作。
Closeable
中的 close
Channel
中的 close
InterruptibleChannel
中的 close
IOException
- 如果發生 I/O 錯誤protected abstract void implCloseChannel() throws IOException
為了實際關閉此通道,由 close
方法調用此方法。僅在此通道尚未關閉時才能調用此方法,並且只能調用一次。
此方法的實作必須安排阻塞於此通道上 I/O 操作中的所有其他執行緒立即返回,要麼拋出異常,要麼正常返回。
IOException
- 如果關閉通道的同時發生 I/O 錯誤public final boolean isOpen()
Channel
複製的描述
Channel
中的 isOpen
protected final void begin()
protected final void end(boolean completed) throws AsynchronousCloseException
為了實作此通道的非同步關閉和中斷,應該使用上面所示的 try ... finally 塊先後調用此方法和 begin
方法。
completed
- 當且僅當 I/O 操作成功完成(也就是說該操作產生對其調用者可見的效果)時才為 true
AsynchronousCloseException
- 如果已經非同步地關閉了通道
ClosedByInterruptException
- 如果已中斷了阻塞在 I/O 操作中的執行緒
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。