IAsynchronousChannel 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
支援異步 I/O 作業的通道。
[Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)]
public interface IAsynchronousChannel : IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)>]
type IAsynchronousChannel = interface
interface IChannel
interface ICloseable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 衍生
- 屬性
- 實作
備註
支援異步 I/O 作業的通道。 異步 I/O 作業通常採用兩種形式之一:
<ol><li>
{@link Future}<V> <em>operation</em>(<em>...</em>)
</li li><>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> handler)
</li></ol>
其中 operation 是 I/O 作業的名稱(例如讀取或寫入), V 是 I/O 作業的結果類型,而 A 是附加至 I/O 作業的物件類型,可在取用結果時提供內容。 附件對於使用 em>< 無狀態/em>CompletionHandler
來取用許多 I/O 作業結果的情況<很重要。
在第一個窗體中,介面所 Future Future
定義的方法可用來檢查作業是否已完成、等候其完成,以及擷取結果。 在第二種形式中, CompletionHandler
會叫用 來取用 I/O 作業完成或失敗時的結果。
實作此介面的通道是<em異步可<關閉/em>:如果通道上的 I/O 作業未完成,而且會叫用通道的 #close close
方法,則 I/O 作業會失敗,但例外狀況為 AsynchronousCloseException
>。
異步通道可供多個並行線程使用。 某些通道實作可能支援並行讀取和寫入,但可能不會允許一個以上的讀取和一個寫入作業在任何指定時間未完成。
<h2>Cancellation</h2>
介面 Future
會 Future#cancel cancel
定義取消執行的方法。 這會導致所有等候 I/O 作業結果的線程擲回 java.util.concurrent.CancellationException
。 是否可以取消基礎 I/O 作業是高度特定的實作,因此未指定。 當取消離開通道或其連接的實體處於不一致的狀態時,通道會放入實作特定的<em錯誤狀態</em>,以防止進一步嘗試起始與取消之作業類似的 I/O 作業>。 例如,如果讀取作業已取消,但實作無法保證尚未從通道讀取位元組,則會讓通道進入錯誤狀態;進一 read
步嘗試起始作業會導致擲回未指定的運行時間例外狀況。 同樣地,如果寫入作業已取消,但實作無法保證尚未寫入通道的位元組,則後續嘗試起始 write
會失敗,且運行時間例外狀況未指定。
Future#cancel cancel
當方法叫用參數mayInterruptIfRunning
設定為 true
時,I/O 作業可能會因為關閉通道而中斷。 在此情況下,所有等候 I/O 作業結果的線程都會擲回 CancellationException
,以及通道上未完成的任何其他 I/O 作業,但例外狀況為 AsynchronousCloseException
。
cancel
叫用 方法以取消讀取或寫入作業時,建議捨棄 I/O 作業中使用的所有緩衝區,或小心確保通道保持開啟時不會存取緩衝區。
已在1.7中新增。
的 java.nio.channels.AsynchronousChannel
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
屬性
Handle |
取得基礎 Android 物件的 JNI 值。 (繼承來源 IJavaObject) |
IsOpen |
如果這個通道已開啟,則傳回 true。 (繼承來源 IChannel) |
JniIdentityHashCode |
傳回包裝實例的 值 |
JniManagedPeerState |
受控對等的狀態。 (繼承來源 IJavaPeerable) |
JniPeerMembers |
成員存取和調用支援。 (繼承來源 IJavaPeerable) |
PeerReference |
傳 JniObjectReference 回已包裝 Java 物件實例的 。 (繼承來源 IJavaPeerable) |
方法
Close() |
關閉此通道。 |
Disposed() |
處置實例時呼叫。 (繼承來源 IJavaPeerable) |
DisposeUnlessReferenced() |
如果這個實例沒有未完成的參考,則呼叫 |
Finalized() |
實例完成時呼叫。 (繼承來源 IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
設定所 |
SetJniManagedPeerState(JniManagedPeerStates) |
支援異步 I/O 作業的通道。 (繼承來源 IJavaPeerable) |
SetPeerReference(JniObjectReference) |
設定所 |
UnregisterFromRuntime() |
取消註冊此實例,讓運行時間不會從未來的 Java.Interop.JniRuntime+JniValueManager.PeekValue 調用傳回它。 (繼承來源 IJavaPeerable) |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
支援異步 I/O 作業的通道。 |
GetJniTypeName(IJavaPeerable) |
支援異步 I/O 作業的通道。 |