当前位置: 首页 > news >正文

漯河网站建设漯河南昌seo顾问

漯河网站建设漯河,南昌seo顾问,cpa网站怎么做,php一台电脑做网站线程池-ThreadPoolExecutor 使用场景 想要频繁的创建和销毁线程的时候 线程池的概念 线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建…

线程池-ThreadPoolExecutor

使用场景

想要频繁的创建和销毁线程的时候

线程池的概念

线程池就是提前创建若干个线程,如果有任务需要处理,线程池里的线程就会处理任务,处理完之后线程并不会被销毁,而是等待下一个任务。由于创建和销毁线程都是消耗系统资源的

线程池的优势

  • 降低创建线程和销毁线程的性能开销
  • 提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立马执行
  • 合理的设置线程池大小(限流)可以避免因为线程数超过硬件资源瓶颈带来的问题

Api Executors

  1. newFixedThreadPool

    该方法返回一个固定数量的线程池,当有一个任务提交时,若线程池中空闲,则立即执行,若没有,则会被暂缓在一个任务队列中,等待有空闲的线程去执行,用途:FixedThreadPool 用于负载比较大的服务器,为了资源的合理利用,需要限制当前线程数量。
    ThreadPoolExecutor(corePoolSize, maximumPoolSize, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());

  2. newSingleThreadExecutor

    创建一个线程的线程池,若空闲则执行,若没有空闲线程则暂缓在任务队列中。ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue());

  3. newCachedThreadPool

    根据实际情况调整线程个数,不限制最大线程数,若用空闲的线程则执行任务,若无任务则不创建线程。并且每一个空闲线程会在 60 秒后自动回收。ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue());

  4. newScheduledThreadPool

    创建一个可以指定线程的数量的线程池,但是这个线程池还带有延迟和周期性执行任务的功能,类似定时器。ThreadPoolExecutor(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue(), threadFactory);

线程池参数

线程池中线程总数、运行线程数、空闲线程数、任务队列等之间的关系

  1. 当【运行的线程数 < corePoolSize】,则直接创建新线程来处理任务,即使线程池中的其他线程是空闲的
  2. 当【corePoolSize <= 线程池中线程数 < maximumPoolSize】,则只有当workQueue满时,才创建新线程处理
  3. 当【corePoolSize = maximumPoolSize】,在workQueue没满时,那么请求会放入workQueue,等待空闲线程去除任务处理
  4. 当【运行的线程数 > maximumPoolSize】,如果workQueue已满,那么会根据指定策略来处理提交过来的任务
  ThreadPoolExecutor(int corePoolSize,                  //核心线程数int maximumPoolSize,               //最大线程数long keepAliveTime,                //超出核心线程数量以外的线程空余存活时间TimeUnit unit,                     //存活时间单位BlockingQueue<Runnable> workQueue, //保存执行任务的队列ThreadFactory threadFactory,       //创建新线程使用的工厂RejectedExecutionHandler handler)  //当任务无法执行的时候的处理方式

任务提交

  1. execute();//任务提交
  2. submit(); //带有返回值的任务提交

最佳线程数

最佳线程数目 = (线程等待时间+任务执行时间)/任务执行时间 * CPU数目

备注:这个公式也是前辈们分享的,当然之前看了淘宝前台系统优化实践的文章,和上面的公式很类似,不过在CPU数目那边,他们更细化了,上面的公式只是参考。不过不管什么公式,最终还是在生产环境中运行后,再优化调整。

例如服务器CPU核数为4核,一个任务线程cpu耗时为20ms,线程等待(网络IO、磁盘IO)耗时80ms,那最佳线程数目:( 80 + 20 )/20 * 4 = 20。也就是设置20个线程数最佳。

http://www.wooajung.com/news/34358.html

相关文章:

  • 做排行榜的网站如何在百度上添加店铺的位置
  • 理财网站如何做推广网络营销策划案怎么写
  • 漳州网站建设哪家好怎样优化标题关键词
  • 网站做等报定级工作要多久免费com域名申请注册
  • 推销别人做网站有什么作用合肥网站关键词优化公司
  • 怎么做彩票网站收款人线上宣传推广方式
  • 青岛高端网站开发百度地图在线使用
  • 西安网约车哪个平台最好厦门seo排名优化
  • 常州酒店网站建设百度搜索引擎推广怎么弄
  • 网站定制设计服务需要使用的技术深圳关键词自动排名
  • 网上做网站怎么赚钱吗企业网站建设服务
  • 重庆建设工程招标投标网班级优化大师功能介绍
  • 重庆seo薪酬水平济宁seo推广
  • 野马视觉传媒网站建设成都网站建设创新互联
  • 基层网站建设存在困难站长素材网
  • 在线设计装修的网站微信管理系统登录
  • 文章分享网站模版河北seo公司
  • 做羞羞的事的视频网站长沙网站推广seo
  • 怎么做网站转盘seo入门课程
  • 做网站都用到哪些软件宣城网站seo
  • 做网站的人月营销案例网站
  • 高端网网站建设个人开发app可以上架吗
  • 手机怎做网站磁力bt种子搜索
  • 成都seo网站开发免费seo排名网站
  • 做邀请函的网站江苏seo外包
  • 自己怎么做外贸网站空间百度移动权重
  • 企业建设网站公司有哪些免费的行情网站app
  • 猎头公司电话南宁正规的seo费用
  • 北京建设规划委员会网站seo营销推广多少钱
  • 南通装饰网站建设网页设计与制作代码成品