如何应对面试官:什么场景中会用到java多线程?
如何应对面试官:什么场景中会用到java多线程?
作者:云栖社区
原文:https://yq.aliyun.com/ziliao/1765
(点击文末阅读原文即可前往)
问:能不能简单描述一下你在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执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!
如何应对面试官:什么场景中会用到java多线程?相关推荐
- 大叔手记(12):我的一次面试经历(谈大叔如何应对面试官)
本文目的 写本文的目的,大叔不是为了装逼(虽然说话的口气有时候也确实有点装逼,性格导致的,咳...我得改),其实大叔在公司也只是小罗罗,本文的目的主要是为了向大家展示如何通过各种软技能应对面试官,这个 ...
- 88道BAT Java面试题 助你跳槽BAT,轻松应对面试官的灵魂拷问
88道BAT Java面试题 助你跳槽BAT,轻松应对面试官的灵魂拷问 前言: 备战金九银十逃脱不了面试官的灵魂拷问,笔者整理了88道Java面试,由于面试题太多文章没有包含答案,需要领取这些面试题答 ...
- 面试官:Vue中组件和插件有什么区别?
一.组件是什么 回顾一下对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度 ...
- 如何应对面试官的闲扯
原文地址:https://club.1688.com/article/31815895.htm 上期我们谈了应对压力面试问题,求职应聘者往往面临面试紧张的环节,甚至压力非常大.但是也有时候,在这紧张的 ...
- 【Redis系列】面试官:Redis中的数据已经过期,为什么还占用这内存?
如果有面试官问Redis中的数据已经过期为什么还占用这内存? 它是因为Redis本身的过期策略和缓存淘汰机制所导致的. 说说Redis的过期策略和缓存淘汰机制 先来说说Redis的过期策略,Redis ...
- 如何应对面试官的JVM调优问题
为什么要进行JVM调优 我猜你肯定是为了面试,现在很多公司都会问这个,虽然你工作了N年JVM调优可能都不会接触到,但我觉得还是有考察的必要的.因为很多时候我们考察一个人不光要考察他的硬实力,还要看他有 ...
- 面试官:Redis中集合数据类型的内部实现方式是什么?
虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的.我搓了搓的被冻的麻木的手,对着前台的小姐姐说:"您好,我是来面试的."小姐姐问:"您好,您叫什么名字?&quo ...
- 面试java你最擅长什么_面试官最喜欢问的10道Java面试题
1.Java的HashMap是如何工作的? HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...
- Vue解析--如何应对面试官提问
近期不断面试中,面试官都会提一些关于Vue相关的源码和"全家桶"之类的问题.那么针对这些提问,我们应该如何更好应答呢?在这里我把对Vue的理解整理出来供大家来参考. 1.Vue是什 ...
最新文章
- 在ASP.NET中指定出错页面,不让代码外泄!
- java redis 网络断开_Redis长时间连接后自动断开
- 那些年我们一起玩DIY总结出的经验——网络篇
- 聊聊大厂面试官必问的 MySQL 锁机制
- 【Zabbix】使用zabbix 3.4自带Mysql模板,监控Redhat 7.0上的Mysql
- LiveVideoStack Meet | 苏州站全记录
- python做股票分析_利用Python进行股票投资组合分析(调试)
- springMVC接收数据和响应返回
- 面试题 10.01. 合并排序的数组
- Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
- [21] Mesh法线的生成算法
- 芯烨Xprinter XP-D3601B 打印机驱动
- 山东标梵讲解如何在HTML文档中使用CSS样式表?
- Java 编程语言单词汇总(建议收藏)
- 中国最年轻的亿万富翁_我和一个亿万富翁一起吃饭。 他给我的建议是无价的。
- 缺少编解码器,错误代码0xc00d5212 WIN10中AVI格式文件无法播放
- 【转自虎嗅】段永平在斯坦福与华人学生交流分享
- 详解液晶面板制造全过程
- web直播+聊天室功能(阿里云播放器和即时通信IM聊天、消息自动滚动)
- 电话号码对应英文单词 (python)