zoukankan      html  css  js  c++  java
  • Thread系列——ThreadPool

    1.线程池,顾名思义,就是装着若干个线程的池子。

    2.出现理由

        可以更为有效的使用线程。

        如何理解这个“有效”?

         (1)我们知道线程在使用之前一般是处于休眠状态的,这样浪费了大量资源创建它,但是却没有使用它,真的是浪费资源。

         (2)使用线程时,线程之间的切换也会浪费大量资源。

       而线程池,就是为了避免上述两个问题,从而更为有效的利用资源来完成线程之间的调度进而完成工作。

    3.线程池工作原理

        

       如上图所示,线程池中维护着若干空闲进程,空闲线程的个数默认为每个处理器25个,最小值是系统的处理器的个数。

       当有任务时,不需要程序员另外启动线程,而是通过ThreadPool.QueueUserWorkItem()方法将任务放到线程池中,线程池会将任务交给合适的线程去执行。其中,该方法有两个参数WaitCallBack和Object,分别是线程启动时调用的方法和在方法中要用到的参数。

       当线程池中的空闲线程都忙着时,线程池要么创建新的空闲线程,要么等待其他线程结束。

      这样设计,可以使任务循环利用线程池中已有的线程,而减少了线程创建和销毁的资源的占用,大大提高了效率。

  • 相关阅读:
    Redis与Memcached汇总
    那些年掉进的坑之AngularJS篇
    常见的Regex表达式(更新RFC标准的email检验)
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
    Windows + Android + Cordova + ionic环境搭建
    less语法
    AngularJS 指令之 ng-style
    AngularJS 指令之 ng-if
    ionic之自定义 ion-tabs 图标
    AngularJS之延迟加载html template
  • 原文地址:https://www.cnblogs.com/ATually/p/1857504.html
Copyright © 2011-2022 走看看