线程池总结

线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程池线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。

所谓的池化思想,都存在很多共性:预先分配、循环使用、复用。===》连接池预先申请数据库连接,连接的复用,内存池预先分配内存,提高内存的分配效率,减少内存碎片等。

 优点就是:(1)能够控制服务器资源,应该说合理的分配服务器资源,不至于过高的QPS,导致服务器资源分配完,从而导致整个服务器瘫痪

                   (2)线程复用,因为反复的创建和销毁线程对于性能的消耗也是有影响的,线程池反而能够降低线程创建和销毁资源的消耗

                   (3) 就是为了优化系统,在大多数的情况下,线程池相比串行化的操作,异步的执行我们的任务,由原来的串行操作,修改成异步操作,降低了系统的响应时间--------异步

缺点:(1)线程池的数量配置的不合理,会导致系统资源的耗尽、可能直接导致系统出现OOM异常

            (2)数据的一致性、业务的复杂性、测试的复杂性(一般线程池的使用,都要结合测试,不断的进行压测,然后观察内存和CPU的变化影响怎么样)

原文地址:https://www.cnblogs.com/KL2016/p/15379025.html