目录
一、Thread 类
1、核心功能
2、使用场景
3、示例代码
4、注意事项
二、ThreadPool 类
1、核心功能
2、使用场景
3、示例代码
4、注意事项
三、Task 类
1、核心功能
2、使用场景
3、示例代码
4、注意事项
四、Parallel 类
1、核心功能
2、使用场景
3、示例代码
4、注意事项
五、async 和 await
1、核心功能
2、使用场景
3、示例代码
4、注意事项
六、线程同步
1、核心功能
2、使用场景
3、示例代码
4、注意事项
七、总结
在C#中,多线程编程涉及多个类和机制,每个类都有其特定的用途和适用场景。以下是对每个类的详细解析,包括其核心功能、使用场景以及示例代码。
一、Thread
类
Thread
类是.NET中最基础的多线程实现方式。它允许你显式地创建和控制线程。
1、核心功能
-
创建和管理线程。
-
启动、暂停、恢复和终止线程。
-
设置线程的优先级和状态。
2、使用场景
-
需要显式控制线程的生命周期。
-
执行长时间运行的任务。
-
需要设置线程的优先级或状态。
3、示例代码
using System;
using System.Threading;class Program
{static void Main(){// 创建一个新线程Thread thread = new Thread(DoWork);thread.Start(); // 启动线程// 主线程继续执行for (int i = 0; i < 5; i++){Console.WriteLine("Main thread: " + i);Thread.Sleep(500);}thread.Join(); // 等待线程结束}static void DoWork(){for (int i = 0; i < 5; i++){Console.WriteLine("Worker thread: " + i);Thread.Sleep(500);}}
}
4、注意事项
-
线程的创建和销毁开销较大。
-
需要手动管理线程的生命周期。
-
线程过多可能导致资源耗尽。
二、ThreadPool
类
ThreadPool
是一个线程池,它管理着一组后台线程,适用于执行短期的任务。
1、核心功能
-
自动管理线程的创建和回收。
-
适用于短期的、不需要显式控制的任务。
2、使用场景
-
执行短期的、不需要长时间运行的任务。
-
减少线程创建和销毁的开销。
3、示例代码
using System;
using System.Threading;class Program
{static void Main(){// 将任务加入线程池ThreadPool.QueueUserWorkItem(DoWork);// 主线程继续执行for (int i = 0; i < 5; i++){Console.WriteLine("Main thread: " + i);Thread.Sleep(500);}}static void DoWork(object state){for (int i = 0; i < 5; i++){Console.WriteLine("Worker thread: " + i);Thread.Sleep(500);}}
}
4、注意事项
-
无法控制线程池中的线程。
-
不适合长时间运行的任务。