zoukankan      html  css  js  c++  java
  • 自制线程池3

    在自制线程池2中讲到了,实现了线程池中的一些不足之处,

    今天我在前面的基础上改进了以下内容,

    A。Thread.Suspend和Thread.Resume方法在2.0已经被Obslete,因此改用了其它方法来实现

    B。原先新建的线程在空闲没有任务时是处于Suspend状态,如果起动了100个线程,完成任务后还是有100个线程存在,现在加入了策略,当线程空闲60s没有被复用(重新获得任务)则该线程自动销毁。

    C。更新了同步的方法,比前面的实现好多了,不过肯定还是存在些问题,同步,竞争读写,线程安全这些内容还是比较糊,在今后的实践中慢慢改进吧

    D。使线程池可以实例化,这样可以创建多个专用的线程池,这样的好处是,一些任务对执行的时间没有要求,但是希望占用的资源低,我们可以给该线程池设定最大允许一个线程长时间执行这项工作,而另外的线程池是一些短时间的密集型请求,我们可以设定同时400个线程运行,同时将它的线程空闲注销时间设的短一些,以增强响应的能力。

    该版本还存在的问题

    A.代码不够清楚,多余的代码仅是注释掉了,并没有删除,这样以后看起来可以给自己一些思路,自己是怎么一步一步改过来的,不知道这个算不算是一个坏习惯,我也想把原先不用的代码删除了,但我怕以后自己都看不懂现在演化过来的代码是什么意思,大家有没有这样的情况

    B.各个实例化的线程池之间无法共享复用空闲线程,这个是一个很大的问题,但是我还没想到实现的方法,为了这个问题想了一天多了。

    C。再将SmartThreadPool中一些实用的功能补充进来。

    另外发现

    这个是实现的代码

    Code

    线程安全的哈希表

    Code

    测试用例1

    Code

    测试用例2

    Code

    在做测试二是,我截了两张图,并不能说说什么,供参考

    我是在Debug模式下测的,内存占用可能会多些,

  • 相关阅读:
    MVC路由测试
    关于Dapper的使用笔记3
    关于Dapper的使用笔记2
    关于Dapper的使用笔记1
    关于WCF与Autofac的整合
    js获取页面元素距离浏览器工作区顶端的距离
    document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题
    js实现获取对象key名
    微信小程序分包跳转主包页面
    js禁止页面滚动
  • 原文地址:https://www.cnblogs.com/lexus/p/1266142.html
Copyright © 2011-2022 走看看