Worker Thread模式如何避免重复创建线程.pdfVIP

Worker Thread模式如何避免重复创建线程.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

34-WorkerThread模式:如何避免重复创建线程?

在上一篇文章中,我们介绍了一种最简单的分工模式——Thread-Per-Message模式,对应到现实世界,其

实就是委托。这种分工模式如果用JavaThread实现,频繁地创建、销毁线程非常影响性能,同时无限

制地创建线程还可能导致OOM,所以在Java领域使用场景就受限了。

要想有效避免线程的频繁创建、销毁以及OOM问题,就不提今天我们要细聊的,也是Java领域使用最

多的WorkerThread模式。

WorkerThread模式及其实现

WorkerThread模式可以类比现实世界里车间的工作模式:车间里的工人,有活儿了,大家一起干,没活儿

了就聊等着。你可以参考下面的示意图来理解,WorkerThread模式中WorkerThread对应到现实世界里,

其实指的就是车间里的工人。不过这里需要注意的是,车间里的工人数量往往是确定的。

车间工作示意图

那在编程领域该如何模拟车间的这种工作模式呢?或者说如何去实现WorkerThread模式呢?通过上面的

图,你很容易就能想到用阻塞队列做任务池,然后创建固定数量的线程消费阻塞队列中的任务。其实你仔细

想会发现,这个方案就是Java语言的线程池。

线程池有很多优点,例如能够避免重复创建、销毁线程,同时能够限制创建线程的上限等等。学习完上一篇

文章后你已经知道,用Java的Thread实现Thread-Per-Message模式难以应对高并发场景,就在于频繁

创建、销毁Java线程的成本有点高,而且地创建线程还可能导致应用OOM。线程池,则恰好能解决这

些问题。

那我们还是以echo程序为例,看看如何用线程池来实现。

下面的示例代码是用线程池实现的echo服务端,相比于Thread-Per-Message模式的实现,改动非常少,仅仅

是创建了一个最多线程数为500的线程池es,然后通过es.execute()方法将请求处理的任务提交给线程池处

理。

ExecutorServicees=Executors

rkrThredmode:avoidthreadcreation34-WorkerThreadmode:

howtoavoidrepeatedlycreatingthreads?

Inthepreviousarticle,weintroducedoneofthesimptdivisionoflabormodel-Thread-Per-Messagemodel,

whichcorrespondstotherealworldandisactuallyentrusted.Ifthisdivisionoflabormodelisimplemented

withJavaThread,frequentcreationanddestructionofthreadswillgreatlyaffectperformance.Atthesameti

me,unlimitedthreadcreationmayalsocauseOOM,sotheusagescenariosintheJavafieldarelimited.

Ifyouwanttoeffectivelyavoidthefrequentcreation,destructionandOOMproblemsofthreads,youhavetomention

whatwearegoingtotalkaboutindetailtoday,whichisalsothemostusedWorkerThreadmodeintheJavafield.

kerhrdWorkerThreadpatternand

itsimplementation

TheWorkerThreadmodelcanbecomparedtotheworkingmodelofaworkshopintherea

文档评论(0)

四季豆 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档