語言

IAsynchronousChannel 介面

定義

一個支援非同步輸入輸出操作的通道。

[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 操作通常會採取兩種形式之一:

<李奧爾><>

{@link Future}&lt;V&gt; <em>operation</em>(<em>...</em>)

</李><莉>

void <em>operation</em>(<em>...</em> A attachment, {@link
              CompletionHandler}&lt;V,? super A&gt; handler)

</li></ol>

其中 操作 是 I/O 操作的名稱(例如讀寫), V 是 I/O 操作的結果型別, A 是附加於 I/O 操作的物件類型,用於在使用結果時提供上下文。 此附加功能對於 <使用 em>無狀態</em>CompletionHandler 來處理多個 I/O 操作結果的情況非常重要。

在第一種形式中,介面定義 Future Future 的方法可用於檢查操作是否完成、等待完成,並取得結果。 在第二種形式中,當 I/O 操作完成或失敗時,會被呼叫 a CompletionHandler 來消耗結果。

實作此介面的通道為 <em>非同步閉合</em>:若通道上有未完成的 I/O 操作且已呼叫該通道 #close close 的方法,則該 I/O 操作在例外 AsynchronousCloseException情況下失敗。

非同步通道對多個並行執行緒來說是安全的。 部分通道實作可能支援並行讀寫,但可能不允許同時完成超過一次讀寫操作。

<h2>取消</h2>

介面 Future 定義 Future#cancel cancel 了取消執行的方法。 這會導致所有等待 I/O 操作結果的執行緒拋出 java.util.concurrent.CancellationException。 底層 I/O 操作是否能被取消,高度依賴實作,因此未明確規定。 當取消使通道或其連接實體處於不一致狀態時,通道會進入實作特定的 <em>錯誤狀態</em> ,阻止進一步嘗試 啟動類似被 取消操作的 I/O 操作。 例如,若讀取操作被取消,但實作無法保證通道中沒有位元組被讀取,則通道會進入錯誤狀態;進一步嘗試啟動操作 read 時,會拋出未指定的執行時例外。 同樣地,若寫入操作被取消,但實作無法保證沒有位元組寫入通道,則後續嘗試啟動 A write 會因未指定的執行時例外而失敗。

Future#cancel cancel 方法被呼叫時參數 mayInterruptIfRunning 設為 , true 則可透過關閉通道來中斷 I/O 操作。 此時,所有等待 I/O 操作結果的執行緒都會拋出 CancellationException ,通道上未完成的 I/O 操作則全部完成,唯獨 除外 AsynchronousCloseException

cancel 呼叫該方法用於取消讀寫操作,建議丟棄所有用於 I/O 操作的緩衝區,或注意確保通道保持開啟時緩衝區不會被存取。

在 1.7 版本中加入。

Java 文件 java.nio.channels.AsynchronousChannel

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

屬性

名稱 Description
Handle

取得底層 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsOpen

如果此通道開啟,則回傳為真。

(繼承來源 IChannel)
JniIdentityHashCode

回傳包裹實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

管理貴族的狀況。

(繼承來源 IJavaPeerable)
JniObjectReferenceControlBlock

一個支援非同步輸入輸出操作的通道。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取與召喚支援。

(繼承來源 IJavaPeerable)
PeerReference

回傳JniObjectReference包裹後的 Java 物件實例。

(繼承來源 IJavaPeerable)

方法

名稱 Description
Close()

關閉這個頻道。

Disposed()

當實例被處理後才被召喚。

(繼承來源 IJavaPeerable)
DisposeUnlessReferenced()

如果沒有未解決的參考資料,則 Dispose()呼叫;否則,則不做任何事。

(繼承來源 IJavaPeerable)
Finalized()

當實例完成後才會被通知。

(繼承來源 IJavaPeerable)
SetJniIdentityHashCode(Int32)

將回傳的值設為 JniIdentityHashCode

(繼承來源 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

一個支援非同步輸入輸出操作的通道。

(繼承來源 IJavaPeerable)
SetPeerReference(JniObjectReference)

將回傳的值設為 PeerReference

(繼承來源 IJavaPeerable)
UnregisterFromRuntime()

取消註冊此實例,讓執行時不會在未來 Java.Interop.JniRuntime+JniValueManager.PeekValue 的呼叫中回傳該實例。

(繼承來源 IJavaPeerable)

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

一個支援非同步輸入輸出操作的通道。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於