简单说明一下:
线程池可以看做容纳线程的容器;一个应用程序最多只能有一个线程池;ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池;每排入一个工作函数,就相当于请求创建一个线程;
线程池的作用:
1,线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。
2,如果一个线程的时间非常长,就没必要用线程池了(不是不能作长时间操作,而是不宜),况且我们还不能控制线程池中线程的开始,挂起,和中止。
一些使用例子:
<>强实例一:强>
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 名称空间ThreadPoolDemo { 类项目 { 静态void Main (string [] args) { System.Threading.ThreadPool。QueueUserWorkItem(新System.Threading.WaitCallback (TestThreadPool),新string [] {“drsw”、“四强”、“自卫队”}); Console.ReadKey (); } 公共静态孔隙TestThreadPool(对象状态) { 字符串作为string[]=[]进行状态;//传过来的参数的值 int workerThreads=0; int completionPortThreads=0; System.Threading.ThreadPool。GetMaxThreads (workerThreads, completionPortThreads); Console.Write (DateTime.Now.ToString() +“-”+进行[0]+”——workerThreads=" + workerThreads +”——completionPortThreads=" + completionPortThreads); } } } >之前上述代码运行结果:
<强>使用例子二:强>
使用系统; 使用System.Collections.Generic; 使用来; 使用text; 名称空间ThreadPoolDemo { 类项目 { 静态void Main (string [] args) { System.Threading.ThreadPool。QueueUserWorkItem(新System.Threading.WaitCallback (TestThreadPool)); Console.ReadKey (); } 公共静态孔隙TestThreadPool(对象状态) { int workerThreads=0; int completionPortThreads=0; System.Threading.ThreadPool。GetMaxThreads (workerThreads, completionPortThreads); Console.Write (DateTime.Now.ToString () +”——workerThreads=" + workerThreads +”——completionPortThreads=" + completionPortThreads); } } } >之前上述代码运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
c#多线程ThreadPool线程池详解