- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
33-Thread-Per-Message模式:最简单实用的分工方法
我们曾经把并发编程领域的问题总结为三个问题:分工、同步和互斥。其中,同步和互斥相关问题
地源自微观,而分工问题则是源自宏观。我们解决问题,往往都是从宏观入手,在编程领域,软件的设计过
程也是先从概要设计开始,而后才进行详细设计。同样,解决并发编程问题,首要问题也是解决宏观的分工
问题。
并发编程领域里,解决分工问题也有一系列的设计模式,比较常用的主要有Thread-Per-Message模式、
WorkerThread模式、生产者-消费者模式等等。今天我们重点介绍Thread-Per-Message模式。
如何理解Thread-Per-Message模式
现实世界里,很多事情我们都需要委托他人,一方面受限于我们的能力,总有很多搞不定的事,比如教
育小朋友,搞不定呢?只能委托学校老师了;另一方面受限于我们的时间,比如忙着写Bug,哪有时
间买别墅呢?只能委托中介了。委托他人有一个非常大的好处,那就是可以专心做自己的事了。
在编程领域也有很多类似的需求,比如写一个HTTPServer,很显然只能在主线接收请求,而不能处理
HTTP请求,因为如果在主线处理HTTP请求的话,那同一时间只能处理一个请求,太慢了!呢?
可以利用的思路,创建一个子线程,委托子线程去处理HTTP请求。
这种委托他人的方式,在并发编程领域被总结为一种设计模式,叫做Thread-Per-Message模式,简言
之就是为每个任务分配一个独立的线程。这是一种最简单的分工方法,实现起来也非常简单。
用Thread实现Thread-Per-Message模式
Thread-Per-Message模式的一个最经典的应用场景是网络编程里服务端的实现,服务端为每个客户端请求
创建一个独立的线程,当线程处理完请求后,自动销毁,这是一种最简单的并发处理网络请求的方法。
网络编程里最简单的程序当数echo程序了,echo程序的服务端会原封不动地将客户端的请求发送回客户
端。例如,客户端发送TCP请求HelloWorld,那么服务端也会返回HelloWorld。
下面我们就以echo程序的服务端为例,介绍如何实现Thread-Per-Message模式。
在Java语言中,实现echo程序的服务端还是很简单的。只需要30行代码就能够实现,示例代码如下,我们
为每个请求都创建了一个Java线程,代码是:newThread(()-{…}).start()。
finalServerSocketChannelssc=
ServerSocketChannel.open().bind(
newInetSocketAddress(8080));
//处理请求
try{
while(true){
//接收请求
SocketChannelsc=ssc.accept();
//每个请求都创建⼀个线程
new
Thread(()-{try
{
//读Socket
ByteBufferrb=ByteBuffer
.allocateDirect(1024);
a‑Perssge式:最可行的别工法
以前我们解决编程领域的问题都是三
您可能关注的文档
最近下载
- 遥感图像目视的解释和制图.ppt VIP
- 遥感图像目视解译.pptx VIP
- 浙江自考00422唐诗研究-速度宝典.pdf VIP
- 2012款一汽奔腾B90_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
- 中信建投-大金重工-002487-深度报告:风能的基石世界的大金.pdf VIP
- 中信建投-电气设备-电力设备行业2026年投资策略报告:站在新周期的起点之上.pdf VIP
- 重症监护病房成人患者护理人文关怀专家共识解读ppt课件.pptx VIP
- 贵州主要造林树种苗木质量等级.pdf VIP
- 浅析户养奶牛繁殖饲养技术与高产管理方法.doc VIP
- 运输物流成本控制措施.docx VIP
原创力文档


文档评论(0)