多线程在实际项目中如何应用 多线程使用场景?
多线程使用场景?
多线程后台任务
一般来说,我们需要在后台处理的任务,通常会使用定时器来启动后台线程处理,比如我需要定期修改的一些数据表的状态,我们搜索引擎中的数据需要定期采集,统计信息需要定期生成,上传的垃圾文件需要定期清理。
多线程异步处理任务
当我们需要处理一个耗时的操作时,不要 如果不能立即知道结果,我们可以启动后台线程来异步处理耗时的操作,这样可以改善用户体验。比如我之前做的一个项目,需要上传简历附件,后台需要解析简历附件,保存在数据表中。由于处理多种格式,我们启动了多线程异步处理,这样用户就不必等到我们的简历被解析后才能看到服务器的响应。例如,当用户下载简历时,我们需要从数据表中的数据生成一个简历附件并发送给用户 通过电子邮件发送到我的邮箱。该操作还可以启动多线程异步处理。
多线程分布式计算
当我们处理一个比较耗时的大任务时,可以把任务切割成几个小任务,然后启动多个线程同时处理这些小任务。切数一般是根据我们服务器CPU的核数,合理利用多核CPU的优势。比如下载操作可以使用多线程下载,提高下载速度;清理文件时,启动多线程,按目录并行处理等等。
作者:左半翼
链接:
来源:简书
简化书版权归作者所有。任何形式的转载请联系作者授权并注明出处。
java电商项目,什么场景需要使用多线程?
场景1:在:,一个业务逻辑有许多周期,每个周期之间没有影响。比如验证10000个url路径的存在性,通常需要循环10000次来逐个验证每个URL,效率会非常低。假设验证一个需要1分钟,总共需要1万分钟,有点吓人。这时候可以用多线程把10000个URL分成50等份,开50个线程,不需要任何线程,只需要验证200个线程,这样所有线程的执行就远小于10000分钟。
场景2 :需要知道一个任务的执行进度,比如我们经常看到的进度条。实现的方法是在任务中加入一个整数属性变量(这样就可以共享不同的方法),当任务执行到一定程度时变量值加1,每隔一段时间打开另一个线程连续访问这个变量并反馈给用户。
简而言之,多线程就是用来充分利用cpu资源,提高程序执行效率的。当你发现一个业务逻辑效率特别低,耗时特别长的时候,可以考虑使用多线程。但是CPU执行哪个线程的时间和顺序是不确定的。即使设置了线程优先级,使用多线程的风险也比较大,会出现很多意想不到的问题,一定要熟悉。概念,构造不同的场景来测试,才能掌握!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。