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

美丽寮步网站建设哪家好esxi WordPress

美丽寮步网站建设哪家好,esxi WordPress,惠州网站建设电话,wordpress旋转自动创建线程池就是直接调用 Executors去new默认的那几个线程池#xff0c;但是会出现一定的风险#xff0c;线程池里面会用到队列#xff0c;也会跟线程池自身有关#xff0c;所以要从队列和线程池两个方面去解析。 1.了解线程池的队列 线程池的内部结构主要由四部分组成…自动创建线程池就是直接调用 Executors去new默认的那几个线程池但是会出现一定的风险线程池里面会用到队列也会跟线程池自身有关所以要从队列和线程池两个方面去解析。 1.了解线程池的队列 线程池的内部结构主要由四部分组成 线程池管理器主要负责管理线程池的创建、销毁、添加任务等管理操作。工作线程从任务队列中获取任务并执行。任务队列作为一种缓冲机制线程池会把当下没有处理的任务放入任务队列中由于多线程同时从任务队列中获取任务是并发场景此时就需要任务队列满足线程安全的要求所以线程池中任务队列采用 BlockingQueue 来保障线程安全。任务任务要求实现统一的接口以便工作线程可以处理和执行。 在说下队列 1.LinkedBlockingQueue无界队列容量无限 对于 FixedThreadPool 和 SingleThreadExector 而言它们使用的阻塞队列是容量为 Integer.MAX_VALUE 的 LinkedBlockingQueue可以认为是无界队列。 由于 FixedThreadPool 线程池的线程数是固定的所以没有办法增加特别多的线程来处理任务这时就需要 LinkedBlockingQueue 这样一个没有容量限制的阻塞队列来存放任务。 这里需要注意由于线程池的任务队列永远不会放满所以线程池只会创建核心线程数量的线程所以此时的最大线程数对线程池来说没有意义因为并不会触发生成多于核心线程数的线程。 SynchronousQueue无限扩展线程数无限扩展 阻塞队列是 SynchronousQueue对应的线程池是 CachedThreadPool。 线程池 CachedThreadPool 的最大线程数是 Integer 的最大值可以理解为线程数是可以无限扩展的。 CachedThreadPool 和上一种线程池 FixedThreadPool 的情况恰恰相反FixedThreadPool 的情况是阻塞队列的容量是无限的而这里 CachedThreadPool 是线程数可以无限扩展所以 CachedThreadPool 线程池并不需要一个任务队列来存储任务因为一旦有任务被提交就直接转发给线程或者创建新线程来执行而不需要另外保存它们。 我们自己创建使用 SynchronousQueue 的线程池时如果不希望任务被拒绝那么就需要注意设置最大线程数要尽可能大一些以免发生任务数大于最大线程数时没办法把任务放到队列中也没有足够线程来执行任务的情况。 DelayedWorkQueue 延迟队列) 阻塞队列是DelayedWorkQueue它对应的线程池分别是 ScheduledThreadPool 和 SingleThreadScheduledExecutor这两种线程池的最大特点就是可以延迟执行任务比如说一定时间后执行任务或是每隔一定的时间执行一次任务。 DelayedWorkQueue 的特点是内部元素并不是按照放入的时间排序而是会按照延迟的时间长短对任务进行排序内部采用的是“堆”的数据结构。之所以线程池 ScheduledThreadPool 和 SingleThreadScheduledExecutor 选择 DelayedWorkQueue是因为它们本身正是基于时间执行任务的而延迟队列正好可以把任务按时间进行排序方便任务的执行。 2.为什么要自己创建线程池 看了上面的介绍其实已经已经知道了为啥了就是收到队列影响 产生内存不足 报错OOM。 在针对之前总结的集中做一个总结。 线程池使用队列风险FixedThreadPoolLinkedBlockingQueue大量堆积的任务会占用大量内存并发生 OOM 也就是OutOfMemoryErrorSingleThreadExecutorLinkedBlockingQueuenewSingleThreadExecutor 和 newFixedThreadPool 的原理是一样的只不过把核心线程数和最大线程数都直接设置成了 1但是任务队列仍是无界的 LinkedBlockingQueue所以也会导致同样的问题也就是当任务堆积时可能会占用大量的内存并导致 OOM。CachedThreadPoolSynchronousQueueSynchronousQueue 本身并不存储任务而是对任务直接进行转发但是最大线程数设置了 Integer.MAX_VALUE所以由于 CachedThreadPool 并不限制线程的数量当任务数量特别多的时候就可能会导致创建非常多的线程最终超过了操作系统的上限而无法创建新线程或者导致内存不足。ScheduledThreadPool 与SingleThreadScheduledExecutorDelayedWorkQueue延迟队列同时也是一个无界队列所以和 LinkedBlockingQueue 一样如果队列中存放过多的任务就可能导致 OOM 所以总结一下相比较而言我们自己手动创建会更好因为我们可以更加明确线程池的运行规则不仅可以选择适合自己的线程数量更可以在必要的时候拒绝新任务的提交避免资源耗尽的风险。
http://www.hkea.cn/news/14491878/

相关文章:

  • 做ppt高手_一定要常去这八个网站企业网站背景颜色
  • 南宁网站seo优化公司dede网站制作
  • wordpress编辑增强图片类网站 怎么做优化
  • 企业网站建设流程知乎微博网页版官网
  • 邯郸建设网站公司简洁型网页
  • ps网站页面设计教程网站设计的安全尺寸
  • 沧州建设厅网站给别人做网站别人违法经营6
  • 阿里巴巴网站首页怎么制作动漫设计与制作就业前景怎么样
  • 西安外贸网站建设数字今天科技 网站
  • 高校工会网站建设浙江城乡建设信息港
  • 图库网站源码下载智慧团建团员登录网站
  • 公司如何申请一个网站网址成都网站logo设计
  • 工作室主题网站建设工程英语网站
  • 北仑建网站价格江门国际网
  • 番禺网站开发技术wordpress后台登陆
  • 网站建设需要具备的能力怎样做_网站做seo
  • node.js 做网站常州网站设计
  • 如何查网站的备案号教育机构招聘
  • 网站整合营销推广专业做装修设计的网站
  • 网站的速度诊断怎么做公司宣传推广方案
  • 外贸建站上海嘉鱼网站建设多少钱
  • 花卉网站建设策划书上海做网站优化公司
  • 湛江网站wordpress寻模板
  • 陌上香坊是做盗版的网站吗网站建设运营
  • 不会编程可以做网站吗重庆市工程建设标准化信息网
  • 张家界建设局网站电话号码网络公司怎么挣钱的
  • 杭州市做外贸网站的公司深圳市水榭花都房地产公司
  • 没有网站怎么快速做cps医疗 企业 网站制作
  • 舟山高端网站建设触摸屏网站如何做
  • 做微博分析的网站网站备案查询主办单位性质为个人