当需要编写多个线程同时执行的代码时,可以使用多线程简化代码的编写量,同时将线程的调度交给系统自动进行维护
这就线程池在此发挥作用的时候
下面来看一个例子:
public class ThreadPoolTest { public void Invoke() { ThreadPool.QueueUserWorkItem (Method); ThreadPool.QueueUserWorkItem (Method2, "Hello World"); } public void Method(object state) { Console.WriteLine ("thread is running,thread Id is: {0}",Thread.CurrentThread.ManagedThreadId); } public void Method2(object state) { Console.WriteLine ("thread is running,thread Id is: {0}",Thread.CurrentThread.ManagedThreadId); Console.WriteLine (" " + (string)state); } }
ThreadPool 位于System.Threading 命名空间下,这是一个静态类,我们主要使用ThreadPool.QueueUserWorkItem(WaitCallBack callBack,object state)方法向线程池中添加操作
该函数包含两个参数,其中WaitCallBack 是一个委托类型,表示一个不带返回值包含一个object参数的方法,这一点和Thread中的ParameterizedThreadStart一致,第二个参数就是方
法所需要传的参数了。
把方法加入到线程池后,如果线程池有空闲线程资源,线程池会自动创建一个线程来执行这个方法,否则就会加入等待队列中。