zoukankan      html  css  js  c++  java
  • 多线程和线程池使用

         //定义个委托 
            public delegate string MethodCaller(string name);
    
            //返回名字的方法
            public string GetName(string name)    
            {
                System.Threading.Thread.Sleep(10000);
                return name;
            }
    
            //主程序
            public ActionResult Main()
            {
                string name = "王五";//输入参数 
    
                MethodCaller mc = new MethodCaller(GetName);
    
                IAsyncResult result = mc.BeginInvoke(name, null, null);
    
                IAsyncResult result1 = mc.BeginInvoke("张三", null, null);
    
                IAsyncResult result2 = mc.BeginInvoke("李四", null, null);
                
                string myname = mc.EndInvoke(result);//用于接收返回值 
    
                string myname1 = mc.EndInvoke(result1);//用于接收返回值 
    
                string myname2 = mc.EndInvoke(result2);//用于接收返回值 
           
           //线程池,此时GetName方法的参数必须是object state。也就是说 public string GetName(object name){},才可以使用线程池的方法。
           //由于线程的创建和销毁需要耗费一定的开销,过多的使用线程会造成内存资源的浪费,出于对性能的考虑,于是引入了线程池的概念。线程池维护一个请求队列,线程
           //池的代码从队列提取任务,然后委派给线程池的一个线程执行,线程执行完不会被立即销毁,这样既可以在后台执行任务,又可以减少线程创建和销毁所带来的开销。
           //线程池线程默认为后台线程(IsBackground),开启线程池,只需下面一句话即可。
           System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(GetName),"六"); }

     参考文章:http://blog.jobbole.com/89261/

  • 相关阅读:
    SpringBook+Lombok 使用教程
    SpringBoot + Swagger Demo
    SpringBoot+Mybatis_Plus Generator
    Ubuntu下创建apt源
    Mysql优化建议
    Zabbix批量添加Hosts
    批量安装Zabbix_Agent
    CentOS7安装Zabbix
    安卓开发中的各种进度条样式
    多点触控之MotionEvent.ACTION_MASK作用
  • 原文地址:https://www.cnblogs.com/cang12138/p/5707740.html
Copyright © 2011-2022 走看看