线程池
线程池与线程的不同
线程的创建是比较占用资源的一件事情,.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
图解执行顺序。
运行结果。
漫思



浙公网安备 33010602011771号