线程池
创建线程需要时间,如果有不同的小任务要完成,就可以事先创建许多线程,在应完成这些任务时发出请求。这个线程数最好在需要更多的线程时增加,在需要释放资源时减少。
不需要自己创建线程池,系统已经有一个ThreadPool类管理线程。这个类会在需要时增减池中线程的线程数,直到达到最大的线程数。池中的最大线程数是可以配置的。在双核CPU中,默认设置为1023个工作线程和1000个Vo线程。
也可以指定在创建线程池时应立即启动的最小线程数,以及线程池中可用的最大线程数。如果有更多的作业要处理,线程池中线程的个数也到了极限,最新的作业就要排队,且必须等待线程完成其任务。
程序代码示例
using System;
using System.Threading;
namespace _093_ThreadPool
{
class Program
{
static void RexThreadMethod(object state) {
Console.WriteLine("点赞关注王東東Rex线程开始了"+Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
Console.WriteLine("线程结束点赞关注完成" + Thread.CurrentThread.ManagedThreadId);
}
static void Main(string[] args)
{
Console.WriteLine("C#有你才更有意义,线程开启方式线程池");
//开启一个工作线程
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
ThreadPool.QueueUserWorkItem(RexThreadMethod);
Console.ReadKey();
}
}
}
程序执行结果
