C# 并行编程之线程池

当需要编写多个线程同时执行的代码时,可以使用多线程简化代码的编写量,同时将线程的调度交给系统自动进行维护

这就线程池在此发挥作用的时候

下面来看一个例子:

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一致,第二个参数就是方

法所需要传的参数了。

把方法加入到线程池后,如果线程池有空闲线程资源,线程池会自动创建一个线程来执行这个方法,否则就会加入等待队列中。

posted @ 2014-02-12 13:55  王晓阳  阅读(347)  评论(0编辑  收藏  举报