多线程处理耗时任务

 我来答
新科技17
2022-06-12 · TA获得超过5855个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:72.8万
展开全部
平台有一个需求:处理客户端传上来的文件,并返回给客户端一个信息。如果客户端接收的信息不是200(即平台端接收文件有异常)或着平台端返回的信息超时,则会发起重传。而平台端要处理的事情是,接收文件并分析处理将关键信息入库

我刚开始的设计逻辑是这样的

刚开始一切都是OK的,但是后来文件数据量的增多,文件解析就需要耗费一定的时间,返回给客户端的信息的时间就会增加,导致返回的时候时间超时,又引发客户端超时重发的机制,所以平台端最后收到好几份数据重复的文件。

为了解决这一问题,想到的方法便是,采取多线程方式。每个文件都开启一个线程对它进行解析,不等解析结果,而是收到完整文件后就直接返回客户端OK的信息,将耗时的操作都放在多线粗芹或程之中,避免客户端超时。

这个问题给我的启发首握是,当你和别的模块合作时,你要理解合作的模块需要你返回什么信息。比如,客户端只需要我告诉他我是否已经接收到文件,因为平台接收到文件意味着他的任务完成了,至于解析成功与否是平台的任务。

还有需要了解合作模块的基本机制,比如,如果我事先了解到客户端在超时情况下会重传,那么我会有这样的风险意识:如果我在耗时操作后再返回给客户端信息,那我可能会导致客户端重传,所以我应该抓住最关键点去返回信息给客户端,避免后续的岩伍问题产生。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式