線程是程序執行路徑,定義獨特控制流。多線程讓應用程序並行執行多任務,提升 CPU 利用率與響應性。現代作業系統廣泛採用線程實現並行編程。
| 狀態 | 說明 |
|---|---|
| 未啟動 | Thread 實例創建,未調用 Start() |
| 就緒 | 等待 CPU 時間片 |
| 不可運行 | Sleep()、Wait()、I/O 阻塞 |
| 死亡 | 執行完成或被中止 |
C# 程序啟動自動創建主線程。System.Threading.Thread 類提供線程操作:
using System; using System.Threading;
Thread th = Thread.CurrentThread;
th.Name = "MainThread";
Console.WriteLine($"This is {th.Name}");
輸出:This is MainThread
| 屬性 | 說明 |
|---|---|
| CurrentThread | 獲取當前執行線程 |
| IsAlive | 線程是否執行中 |
| IsBackground | 是否後台線程 |
| ManagedThreadId | 唯一標識符 |
| Name | 線程名稱 |
| Priority | 調度優先級 |
| ThreadState | 綜合狀態值 |
| 方法 | 說明 |
|---|---|
| Start() | 啟動線程 |
| Sleep(ms) | 暫停指定毫秒 |
| Join() | 阻塞調用線程直到目標線程終止 |
| Abort() | 請求終止線程(拋 ThreadAbortException) |
| Interrupt() | 喚醒 WaitSleepJoin 狀態線程 |
| Yield() | 讓出 CPU 給同優先級線程 |
ThreadStart childRef = new ThreadStart(ChildThreadMethod); Thread childThread = new Thread(childRef); childThread.Start();
Sleep(5000) 暫停 5 秒。Abort() 強制終止,拋出 ThreadAbortException,不可捕獲,但 finally 塊仍會執行:
try {
for (int i=0; i<=10; i++) { Thread.Sleep(500); Console.WriteLine(i); }
} catch (ThreadAbortException) { Console.WriteLine("Thread Abort"); }
finally { Console.WriteLine("Couldn't catch"); }
現代 C# 推薦使用 Task、async/await、ThreadPool 等高級抽象,Thread 類適合底層控制場景。