zoukankan      html  css  js  c++  java
  • 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一致,第二个参数就是方

    法所需要传的参数了。

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

  • 相关阅读:
    Struts2拦截器
    Struts2 数据封装与值栈
    Struts2的环境搭配
    自学spring AOP
    小白学Maven第二篇配置Ecilpse
    小白学Maven第一篇配置
    web项目jsp出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path错误
    软件测试复习(二)
    软件测试复习(一)
    白盒测试概述
  • 原文地址:https://www.cnblogs.com/yayaxxww/p/3545832.html
Copyright © 2011-2022 走看看