Springboot 测试用例 微信直播 SQLMAP automation 直销系统源码 matlab中axis matlab插值函数 linux启动mysql命令 安装python python如何注释 python中get函数 python写文件 python平台 java开发环境 java删除数组元素 java获取现在时间 linuxtar命令 bcdautofix 电子书之家 begininvoke msn格式 页面刷新 存储过程写法 php小数点保留2位 mp4剪切合并大师 相册制作工具 xlwt php保留两位小数 冬青黑体简体中文 ae烟雾特效 pr怎么消除杂音 凯立德导航地图 javascript基础教程 鼠标指向宏 服务器软件 pr插件 显卡体质多少算好 github上传项目 mysql命令行
当前位置: 首页 > 学习教程  > 编程学习

java web开发中需要用到多线程编程的场景?

2021/1/9 1:51:38 文章标签: 多线程的应用场景

问:能不能简单描述一下你在java web开发中需要用到多线程编程的场景? 对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?回答一: 最典型的如: 1、用户注册…

问:能不能简单描述一下你在java web开发中需要用到多线程编程的场景?

对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?

回答一:

最典型的如:
1、用户注册完成送大礼包/积分之类,且积分等也是另一个系统并比较耗时;且这类任务即使失败也不是特别重要的。
2、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度(如quartz),一些监控用于定期信息采集等。

回答二:

最典型的应用比如tomcat,tomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程序,比如doGet或者doPost方法。

如果不采用多线程机制,上百个人同时访问一个web应用的时候,tomcat就得排队串行处理了,那样客户端根本是无法忍受那种访问速度的。

还有就是需要异步处理的时候,需要使用多线程。比如task a和task b要并行处理,单个线程只能串行处理,先做完task a然后再做task b。如果想要多个task同时执行的话,就必须为每个task分配一个线程,然后通过java虚拟机的线程调度,来同时执行多个任务。比如你的CPU是多核心的话,就可以让一个CPU执行一个线程。如果只有一个CPU的话,底层是按照分时复用的原则,各个线程按照时间片来获得CPU资源。

回答三:

特别耗时的操作,如备份数据库,可以开个线程执行备份,然后执行返回,前台不断向后台询问线程执行状态


问:JAVA项目中哪些场景需要用到多线程,深感迷茫,请使用过的高手指点。

答:


场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。

 

场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。

 

总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

 

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索应用 , 线程 , 多线程 , cpu , 效率 时间 java web项目 多线程、java多线程应用场景、java多线程的应用场景、java多线程使用场景、java多线程场景,以便于您获取更多的相关知识。


本文链接: http://www.dtmao.cc/news_show_1100017.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?