Thread 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
執行緒是程式中的執行執行緒。
[Android.Runtime.Register("java/lang/Thread", DoNotGenerateAcw=true)]
public class Thread : Java.Lang.Object, IDisposable, Java.Lang.IRunnable
[<Android.Runtime.Register("java/lang/Thread", DoNotGenerateAcw=true)>]
type Thread = class
inherit Object
interface IRunnable
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- 繼承
- 衍生
- 屬性
- 實作
備註
執行緒是程式中的執行執行緒。 Java 虛擬機允許應用程式同時執行多個執行緒。
每個討論串都有優先順序。 優先權較高的執行緒會優先執行,優先於優先權較低的執行緒。 每個執行緒也可能被標記為守護程序,也可能不會。 當某執行緒中執行的程式碼建立新 Thread 物件時,該新執行緒的優先權初始設定等於建立執行緒的優先權,且當且僅當該執行緒是守護進程時,才是守護進程。
當 Java 虛擬機啟動時,通常會有一個非守護進程執行緒(通常會呼叫某個指定類別中命名main的方法)。 Java 虛擬機持續執行執行緒,直到以下任一發生:<ul><li>exit 類別的方法Runtime已被呼叫,且安全管理器允許執行退出操作。
<li>所有非守護程序執行緒的執行緒都已死亡,無論是從呼叫方法 run 回傳,還是拋出超出方法範圍 run 的例外。
</ul>
有兩種方式可以建立新的執行線程。 一種是宣告一個類別為 的 Thread子類。 此子類別應覆寫 run 類別的方法 Thread。 接著可以分配並啟動該子類別的實例。 例如,計算出比指定值更大的質數的執行緒可以寫成: <hr><blockquote>
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
</blockquote><HR>
以下程式碼會建立執行緒並啟動執行 <:blockquote>
PrimeThread p = new PrimeThread(143);
p.start();
</區塊引用>
另一種建立執行緒的方法是宣告一個實作介面的 Runnable 類別。 該類別接著實作該 run 方法。 接著可以分配一個類別的實例,並在建立 Thread時傳遞為參數,並啟動。 同樣的範例在另一種格式中如下: <hr><blockquote>
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
</blockquote><HR>
以下程式碼會建立執行緒並啟動執行 <:blockquote>
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
</區塊引用>
每個線索都有名稱以便識別。 可能有多個討論串名稱相同。 如果在建立執行緒時未指定名稱,則會為該執行緒產生一個新名稱。
除非另有說明,將參數傳遞 null 給此類別中的建構子或方法會導致拋出 a NullPointerException 。
1.0 版本新增。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
建構函式
| 名稱 | Description |
|---|---|
| Thread() |
分配一個新的 |
| Thread(Action, String) |
初始化一個以指定名稱執行指定 |
| Thread(Action) |
初始化一個在啟動時執行指定 |
| Thread(IntPtr, JniHandleOwnership) |
用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。 |
| Thread(IRunnable, String) |
分配一個新的 |
| Thread(IRunnable) |
分配一個新的 |
| Thread(String) |
分配一個新的 |
| Thread(ThreadGroup, Action, String, Int64) |
初始化 Thread 指定執行緒群組中一個新執行,並以指定名稱與堆疊大小 |
| Thread(ThreadGroup, Action, String) |
在指定執行緒群組中初始化一個新執行 Thread 緒,並以指定名稱執行指定的 |
| Thread(ThreadGroup, Action) |
初始化指定執行緒群組中的一個新執行 Thread 緒,啟動時執行指定的 |
| Thread(ThreadGroup, IRunnable, String, Int64, Boolean) |
分配一個新 |
| Thread(ThreadGroup, IRunnable, String, Int64) |
分配一個新 |
| Thread(ThreadGroup, IRunnable, String) |
分配一個新 |
| Thread(ThreadGroup, IRunnable) |
分配一個新的 |
| Thread(ThreadGroup, String) |
分配一個新的 |
欄位
| 名稱 | Description |
|---|---|
| MaxPriority |
執行緒能擁有的最大優先權。 |
| MinPriority |
這是執行緒可以擁有的最低優先權。 |
| NormPriority |
預設分配給執行緒的優先權。 |
屬性
| 名稱 | Description |
|---|---|
| AllStackTraces |
回傳所有活執行緒的堆疊追蹤圖。 |
| Class |
回傳此 |
| ContextClassLoader |
回傳本討論串的上下文 |
| Daemon |
測試這個執行緒是否是守護程序執行緒。 |
| DefaultUncaughtExceptionHandler |
回傳當執行緒因未捕捉異常而突然終止時所呼叫的預設處理器。 -或- 設定當執行緒因未捕捉的例外突然終止,且該執行緒未定義其他處理程序時,所呼叫的預設處理器。 |
| Handle |
底層 Android 實例的帳號。 (繼承來源 Object) |
| Id |
回傳此執行緒的識別碼。 |
| IsAlive |
測試這個討論串是否還活著。 |
| IsInterrupted |
測試此串是否被中斷。 |
| IsVirtual |
如果這個執行緒是虛擬執行緒,則回傳 |
| JniIdentityHashCode |
取得由互通執行時指派給此 Java 對等端的身份雜湊碼。 (繼承來源 Object) |
| JniManagedPeerState |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| JniPeerMembers |
取得用於調用此 Java 節點成員的 JNI 元資料。 |
| Name |
回傳這個討論串的名稱。 -或- 將此線程名稱改為等於參數 |
| PeerReference |
取得這個 Java 節點的 JNI 物件參考。 (繼承來源 Object) |
| Priority |
返回本討論串的優先權。 |
| ThreadGroup |
回傳該執行緒所屬的執行緒群組。 |
| ThresholdClass |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| ThresholdType |
此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。 |
| UncaughtExceptionHandler |
當此執行緒因未捕捉異常突然終止時,回傳所呼叫的處理器。 -或- 設定當該執行緒因未捕捉異常而突然終止時所呼叫的處理程序。 |
方法
| 名稱 | Description |
|---|---|
| ActiveCount() |
回傳目前執行緒 Java 中活躍執行緒數量的估計值。 |
| CheckAccess() |
判斷目前執行的執行緒是否有權限修改此執行緒。 |
| Clone() |
建立並回傳此物件的副本。 (繼承來源 Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| CountStackFrames() |
已淘汰.
拋出 |
| CurrentThread() |
回傳目前執行執行緒物件的參考。 |
| Destroy() |
已淘汰.
拋出 |
| Dispose() |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| Dispose(Boolean) |
釋放該 Java 節點所持有的資源。 (繼承來源 Object) |
| DisposeUnlessReferenced() |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| DumpStack() |
會將當前執行緒的堆疊追蹤印到標準錯誤串流。 |
| Enumerate(Thread[]) |
將當前執行緒執行緒群組及其子群組中所有活躍的執行緒複製到指定陣列中。 |
| Equals(Object) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| Equals(Object) |
表示是否有其他物體「等同」於此物。 (繼承來源 Object) |
| GetHashCode() |
回傳物件的雜湊碼值。 (繼承來源 Object) |
| GetStackTrace() |
回傳一個堆疊追蹤元素陣列,代表該執行緒的堆疊傾印。 |
| GetState() |
返回本討論串的狀態。 |
| HoldsLock(Object) |
當且僅當當前執行緒對指定物件保持監控鎖定時,回傳 |
| Interrupt() |
打斷這個討論串。 |
| Interrupted() |
測試目前執行緒是否被中斷。 |
| JavaFinalize() |
已淘汰.
當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。 (繼承來源 Object) |
| Join() |
等著這個討論串死掉。 |
| Join(Duration) |
等待這串討論串終止,最多等待指定時間。 |
| Join(Int64, Int32) |
最多 |
| Join(Int64) |
最多 |
| Notify() |
喚醒一個正在該物件監視器上等待的執行緒。 (繼承來源 Object) |
| NotifyAll() |
喚醒所有等待該物件監視器的執行緒。 (繼承來源 Object) |
| OnSpinWait() |
表示呼叫者暫時無法繼續前進,直到其他活動發生一項或多項動作。 |
| Resume() |
已淘汰.
拋出 |
| Run() |
如果這個執行緒是用獨立 |
| SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| Sleep(Duration) |
會使目前執行的執行緒在指定時間內進入睡眠(暫時停止執行),並取決於系統計時器和排程器的精確度與精確度。 |
| Sleep(Int64, Int32) |
會使當前執行的執行緒進入睡眠(暫時停止執行),持續指定的毫秒加上指定的奈秒,並受系統計時器與排程器的精確度限制。 |
| Sleep(Int64) |
會使目前執行的執行緒進入睡眠(暫時停止執行),時間為指定的毫秒,並受系統計時器和排程器的精確度限制。 |
| Start() |
會使此執行緒開始執行;Java 虛擬機會呼叫 |
| Stop() |
已淘汰.
拋出 |
| Stop(Throwable) |
已淘汰.
拋出 |
| Suspend() |
已淘汰.
拋出 |
| ThreadId() |
回傳此執行緒的識別碼。 |
| ToArray<T>() |
從這個 Java 陣列包裝器建立一個受管理陣列。 (繼承來源 Object) |
| ToString() |
回傳物件的字串表示。 (繼承來源 Object) |
| UnregisterFromRuntime() |
將此 Java 節點從互通執行時中取消註冊。 (繼承來源 Object) |
| Wait() |
導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。 (繼承來源 Object) |
| Wait(Int64, Int32) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Wait(Int64) |
會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。 (繼承來源 Object) |
| Yield() |
這是向排程器暗示目前執行緒願意放棄其目前處理器的使用情況。 |
明確介面實作
| 名稱 | Description |
|---|---|
| IJavaPeerable.Disposed() |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.Finalized() |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
執行緒是程式中的執行執行緒。 (繼承來源 JavaObject) |
| IJavaPeerable.UnregisterFromRuntime() |
執行緒是程式中的執行執行緒。 |
擴充方法
| 名稱 | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
取得實例 |
| JavaAs<TResult>(IJavaPeerable) |
試著強制 |
| JavaCast<TResult>(IJavaObject) |
執行 Android 執行時檢查型別轉換。 |
| JavaCast<TResult>(IJavaObject) |
執行緒是程式中的執行執行緒。 |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
試著強制 |