• 线程池


    线程池的引用:
    创建线程还是比较简单的,但是由于线程的创建和销毁需要耗费一定的开销(默认情况下,主线程占用1M,子线程占用512KB,线程越多,占用内存也越多),过多的使用线程反而会造成内存资源的浪费,从而影响性能,
    出于对性能的考虑,于是引入了线程池的概念。 线程池是应用程序要创建线程来执行任务的时候,线程池才会初始化一个线程,
    初始化的线程和其他线程一样,但是在线程完成任务之后不会自行销毁,
    而是以挂起的状态回到线程池,当应用程序再次向线程池发出请求的时候,线程池里挂起的线程会再度激活执行任务。 这样做可以减少线程创建和销毁所带来的开销。 简单说:线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。
    线程池非常适合大量小的运算。 当应用程序想要执行一个异步操作时,需要调用QueueUserWorkItem方法将对应的任务添加到线程池中。 线程池会从队列中提取任务, 并且将其委派给线程池中的线程执行。

    使用线程池的方法:

    ThreadPool.QueueUserWorkItem(CallBackWorkItem); //CallBackWorkItem 参数为线程池线程执行的回调方法
    ThreadPool.QueueUserWorkItem(CallBackWorkItem, "abc"); //CallBackWorkItem 参数为线程池线程执行的回调方法 第二个参数表示传递给回调方法的参数
     
    void CallBackWorkItem(object state)
    {
        Console.WriteLine("子线程执行");
        if(state != null){
            Console.WriteLine("使用这行语句调用了这个线程方法 : ThreadPool.QueueUserWorkItem(CallBackWorkItem, "abc")"); 
        }
        else{
            Console.WriteLine("使用这行语句调用了这个线程方法 : ThreadPool.QueueUserWorkItem(CallBackWorkItem)"); 
        }
    }
    ————————————————
    版权声明:本文为CSDN博主「乌班图ysm」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u012278016/article/details/104893824
    人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
  • 相关阅读:
    jQuery属性操作,attr 和 prop的区别。笔记记录
    li 自身样式不显示?使用 overflow:hidden 导致li 前面点,圈等样式不见情况处理
    jQuery 最新版类库 和 常用的类库[jquery-1.12.3,jquery-1.7.2]下载
    Excel 中如何让下拉菜单显示汉字,但是值是数字
    Uncaught TypeError: $(...).on is not a function
    全选,全不选,反选的逻辑思路
    Linux 解决 vsftpd 读取目录列表失败的问题。
    SQL Sever 2012数据库从下载到安装完成【一步一图,带上脑子即可】
    【闲暇研究】某问道,游戏的整合记录
    Tomcat 启动后出现乱码的解决办法。
  • 原文地址:https://www.cnblogs.com/ZkbFighting/p/15308939.html
Copyright © 2020-2023  润新知