线程池与线程的不同
线程的创建是比较占用资源的一件事情,.NET 为我们提供了线程池来帮助我们创建和管理线程。Task是默认会直接使用线程池,但是Thread不会。如果我们不使用Task,又想用线程池的话,可以使用ThreadPool类。
Demo
上代码。

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 using System.Threading.Tasks; 7 8 namespace AsyncCoding 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 ThreadPool.QueueUserWorkItem(Go1);//使用线程池,默认创建的是后台线程 15 16 Console.WriteLine("我是主线程,Thread Id:{0}", Thread.CurrentThread.ManagedThreadId); 17 Console.ReadKey(); 18 } 19 20 public static void Go1(object state) 21 { 22 Console.WriteLine("我是异步线程,Thread Id:{0},是否为后台线程:{1}", Thread.CurrentThread.ManagedThreadId, Thread.CurrentThread.IsBackground); 23 for (int i = 0; i < 10; i++) 24 { 25 Thread.Sleep(100);//模拟每次执行需要100ms 26 Console.WriteLine("异步线程,Thread Id:{0},运行:{1}", Thread.CurrentThread.ManagedThreadId, i); 27 } 28 } 29 } 30 } 31
图解执行顺序。
运行结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架