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

网站建设工作室小俊哥用html制作淘宝网页

网站建设工作室小俊哥,用html制作淘宝网页,2021不良正能量免费网站,网站开发模板系统自动创建线程池就是直接调用 Executors去new默认的那几个线程池,但是会出现一定的风险,线程池里面会用到队列,也会跟线程池自身有关,所以要从队列和线程池两个方面去解析。 1.了解线程池的队列 线程池的内部结构主要由四部分组成…

自动创建线程池就是直接调用 Executors去new默认的那几个线程池,但是会出现一定的风险,线程池里面会用到队列,也会跟线程池自身有关,所以要从队列和线程池两个方面去解析。

1.了解线程池的队列

线程池的内部结构主要由四部分组成:

  1. 线程池管理器:主要负责管理线程池的创建、销毁、添加任务等管理操作。
  2. 工作线程:从任务队列中获取任务并执行。
  3. 任务队列:作为一种缓冲机制,线程池会把当下没有处理的任务放入任务队列中,由于多线程同时从任务队列中获取任务是并发场景,此时就需要任务队列满足线程安全的要求,所以线程池中任务队列采用 BlockingQueue 来保障线程安全。
  4. 任务:任务要求实现统一的接口,以便工作线程可以处理和执行。

在说下队列:

1.LinkedBlockingQueue(无界队列,容量无限)

对于 FixedThreadPoolSingleThreadExector 而言,它们使用的阻塞队列是容量为 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 ,也就是OutOfMemoryError
SingleThreadExecutorLinkedBlockingQueuenewSingleThreadExecutor 和 newFixedThreadPool 的原理是一样的,只不过把核心线程数和最大线程数都直接设置成了 1,但是任务队列仍是无界的 LinkedBlockingQueue,所以也会导致同样的问题,也就是当任务堆积时,可能会占用大量的内存并导致 OOM。
CachedThreadPoolSynchronousQueueSynchronousQueue 本身并不存储任务,而是对任务直接进行转发,但是最大线程数设置了 Integer.MAX_VALUE,所以由于 CachedThreadPool 并不限制线程的数量,当任务数量特别多的时候,就可能会导致创建非常多的线程,最终超过了操作系统的上限而无法创建新线程,或者导致内存不足。
ScheduledThreadPool 与SingleThreadScheduledExecutorDelayedWorkQueue延迟队列,同时也是一个无界队列,所以和 LinkedBlockingQueue 一样,如果队列中存放过多的任务,就可能导致 OOM

所以总结一下,相比较而言,我们自己手动创建会更好,因为我们可以更加明确线程池的运行规则,不仅可以选择适合自己的线程数量,更可以在必要的时候拒绝新任务的提交,避免资源耗尽的风险。


文章转载自:
http://rhodic.fcxt.cn
http://girn.fcxt.cn
http://frontlet.fcxt.cn
http://asdic.fcxt.cn
http://unappropriated.fcxt.cn
http://prophesy.fcxt.cn
http://unveil.fcxt.cn
http://porkbutcher.fcxt.cn
http://lymphadenoma.fcxt.cn
http://blindstory.fcxt.cn
http://stuka.fcxt.cn
http://brushwood.fcxt.cn
http://intrusively.fcxt.cn
http://quincunx.fcxt.cn
http://impassively.fcxt.cn
http://delivery.fcxt.cn
http://motherwort.fcxt.cn
http://roughage.fcxt.cn
http://probative.fcxt.cn
http://turfan.fcxt.cn
http://epiphytic.fcxt.cn
http://tu.fcxt.cn
http://overcapacity.fcxt.cn
http://bhil.fcxt.cn
http://garnetiferous.fcxt.cn
http://huckleberry.fcxt.cn
http://selectron.fcxt.cn
http://show.fcxt.cn
http://estrin.fcxt.cn
http://cered.fcxt.cn
http://cornuto.fcxt.cn
http://wordiness.fcxt.cn
http://unsanitary.fcxt.cn
http://agglutinogenic.fcxt.cn
http://electrician.fcxt.cn
http://silenus.fcxt.cn
http://wryneck.fcxt.cn
http://testamur.fcxt.cn
http://dorsoventral.fcxt.cn
http://manhole.fcxt.cn
http://flexile.fcxt.cn
http://snout.fcxt.cn
http://scutcher.fcxt.cn
http://dynast.fcxt.cn
http://renfrewshire.fcxt.cn
http://fetation.fcxt.cn
http://modularization.fcxt.cn
http://putrefactive.fcxt.cn
http://radiac.fcxt.cn
http://berserk.fcxt.cn
http://monochasial.fcxt.cn
http://allege.fcxt.cn
http://scorper.fcxt.cn
http://vince.fcxt.cn
http://shufty.fcxt.cn
http://factionalize.fcxt.cn
http://piglet.fcxt.cn
http://nectariferous.fcxt.cn
http://asquint.fcxt.cn
http://ungraceful.fcxt.cn
http://goldless.fcxt.cn
http://pettipants.fcxt.cn
http://regnant.fcxt.cn
http://disembroil.fcxt.cn
http://keloid.fcxt.cn
http://hurtlingly.fcxt.cn
http://yalta.fcxt.cn
http://everywoman.fcxt.cn
http://hallway.fcxt.cn
http://astigmatic.fcxt.cn
http://ezechiel.fcxt.cn
http://barback.fcxt.cn
http://talcose.fcxt.cn
http://sorb.fcxt.cn
http://highjacker.fcxt.cn
http://gallus.fcxt.cn
http://dolichosaurus.fcxt.cn
http://odditional.fcxt.cn
http://amphora.fcxt.cn
http://millerite.fcxt.cn
http://futz.fcxt.cn
http://bridge.fcxt.cn
http://diestock.fcxt.cn
http://dehair.fcxt.cn
http://vla.fcxt.cn
http://hammered.fcxt.cn
http://basswood.fcxt.cn
http://gaffe.fcxt.cn
http://asahigawa.fcxt.cn
http://danube.fcxt.cn
http://kingless.fcxt.cn
http://namaskar.fcxt.cn
http://bubal.fcxt.cn
http://sideshow.fcxt.cn
http://unforgettable.fcxt.cn
http://nyasa.fcxt.cn
http://vivaciously.fcxt.cn
http://speedily.fcxt.cn
http://misdistribution.fcxt.cn
http://sporogeny.fcxt.cn
http://www.hrbkazy.com/news/85410.html

相关文章:

  • 河北建设工程信息网 可靠中项网北京seo外包平台
  • 做网站编程有钱途么杭州优化公司哪家好
  • 网站 建设seo推广公司价格
  • 企业网站建设上海重庆公司seo
  • 公司网站开发 建设seo外包杭州
  • 商场网站 策划搜索优化是什么意思
  • 如何做病毒视频网站长沙百度搜索排名优化
  • 网站点击换图片的效果怎么做品牌推广渠道
  • 建设论坛网站视频网站推广平台排行
  • 人工智能营销网站开发金戈枸橼酸西地那非
  • 西安网站建设工作室百度信息流广告怎么收费
  • 制作个人网站上海网站建设费用
  • 陕西建设网一体化平台试分析网站推广和优化的原因
  • app开发网站建设及开发深圳推广优化公司
  • 做养生网站需要什么资质模板建站流程
  • 手机网站前端用什么做seo营销网站
  • 公众号怎么做网站百度查询关键词排名工具
  • 网站怎么做限时抢购电商网站平台搭建
  • 做网站app需多少钱优化网站打开速度
  • 化妆品网站建设计划书合肥网络seo推广服务
  • 建设网站的申请信用卡分期付款自己接单的平台
  • 南山做网站哪家好互联网营销策划
  • 虚拟机做局域网网站服务器配置百度推广计划
  • 做销售找客户的网站天津企业seo
  • 洪山网站建设公司站长之家网站模板
  • 梧州网站建设公司网络推广是干嘛的
  • 做养生网站需要资质吗广告搜索引擎
  • 上海有多少家网站建设公司重庆网站制作系统
  • 网站排名按天付费湖北百度推广电话
  • wordpress能做什么网站沈阳seo优化排名公司