zoukankan      html  css  js  c++  java
  • 线程池?

    转载

    线上程序线程数过多的原因:这是一个接收MQ消息的一个服务,程序大体思路是这样的,监听的线程每次收到一条消息,就启动一个线程去执行,每次启动的线程都是新的。

    说到这里,咱们就谈一谈这个程序有哪些弊端:

    • 每次收到一条消息都创建一个新的线程,要知道线程的资源对于系统来说是很昂贵的,消息处理完成还要销毁这个线程;

    • 这个程序用到的线程数量是没有限制的。当线程到达一定数量,程序反而因线程在cpu切换开销的原因处理效率降低。无论的你的服务器cpu是多少核心,这个现象都有发生的可能。

    解决问题

    线程多的问题该怎么解决呢,增加cpu核心数?治标不治本。对于开发者而言,最为常用也最为有效的是线程池化,也就是说线程池。

    线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。例如,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。

    线程池其中一项很重要的技术点就是任务的队列,队列虽然属于一种基础的数据结构,但是发挥了举足轻重的作用。

  • 相关阅读:
    png图片透明在ie6中显示问题
    DIV背景图片在Firefox下不显示,IE下正常
    整理:兼容 IE、Firefox、Opera和Safari
    IE6背景消失问题
    鼠标悬停换图片或背景
    网站团队组建方案
    CSS兼容IE6,IE7,FF的技巧
    打造MySQL版的最新IP数据库
    域名判断后跳转——PHP跳转代码_ASP跳转代码_JS跳转代码
    IE6文字消失、背景圖消失之謎
  • 原文地址:https://www.cnblogs.com/lemon333333/p/10291387.html
Copyright © 2011-2022 走看看