如何应对面试官:什么场景中会用到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多线程?相关推荐

  1. 大叔手记(12):我的一次面试经历(谈大叔如何应对面试官)

    本文目的 写本文的目的,大叔不是为了装逼(虽然说话的口气有时候也确实有点装逼,性格导致的,咳...我得改),其实大叔在公司也只是小罗罗,本文的目的主要是为了向大家展示如何通过各种软技能应对面试官,这个 ...

  2. 88道BAT Java面试题 助你跳槽BAT,轻松应对面试官的灵魂拷问

    88道BAT Java面试题 助你跳槽BAT,轻松应对面试官的灵魂拷问 前言: 备战金九银十逃脱不了面试官的灵魂拷问,笔者整理了88道Java面试,由于面试题太多文章没有包含答案,需要领取这些面试题答 ...

  3. 面试官:Vue中组件和插件有什么区别?

    一.组件是什么 回顾一下对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度 ...

  4. 如何应对面试官的闲扯

    原文地址:https://club.1688.com/article/31815895.htm 上期我们谈了应对压力面试问题,求职应聘者往往面临面试紧张的环节,甚至压力非常大.但是也有时候,在这紧张的 ...

  5. 【Redis系列】面试官:Redis中的数据已经过期,为什么还占用这内存?

    如果有面试官问Redis中的数据已经过期为什么还占用这内存? 它是因为Redis本身的过期策略和缓存淘汰机制所导致的. 说说Redis的过期策略和缓存淘汰机制 先来说说Redis的过期策略,Redis ...

  6. 如何应对面试官的JVM调优问题

    为什么要进行JVM调优 我猜你肯定是为了面试,现在很多公司都会问这个,虽然你工作了N年JVM调优可能都不会接触到,但我觉得还是有考察的必要的.因为很多时候我们考察一个人不光要考察他的硬实力,还要看他有 ...

  7. 面试官:Redis中集合数据类型的内部实现方式是什么?

    虽然已经是阳春三月,但骑着共享单车骑了这么远,还有有点冷的.我搓了搓的被冻的麻木的手,对着前台的小姐姐说:"您好,我是来面试的."小姐姐问:"您好,您叫什么名字?&quo ...

  8. 面试java你最擅长什么_面试官最喜欢问的10道Java面试题

    1.Java的HashMap是如何工作的? HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...

  9. Vue解析--如何应对面试官提问

    近期不断面试中,面试官都会提一些关于Vue相关的源码和"全家桶"之类的问题.那么针对这些提问,我们应该如何更好应答呢?在这里我把对Vue的理解整理出来供大家来参考. 1.Vue是什 ...

最新文章

  1. 在ASP.NET中指定出错页面,不让代码外泄!
  2. java redis 网络断开_Redis长时间连接后自动断开
  3. 那些年我们一起玩DIY总结出的经验——网络篇
  4. 聊聊大厂面试官必问的 MySQL 锁机制
  5. 【Zabbix】使用zabbix 3.4自带Mysql模板,监控Redhat 7.0上的Mysql
  6. LiveVideoStack Meet | 苏州站全记录
  7. python做股票分析_利用Python进行股票投资组合分析(调试)
  8. springMVC接收数据和响应返回
  9. 面试题 10.01. 合并排序的数组
  10. Ubuntu中ssh远程报错:packet_write_wait: Connection to 192.168.163.190 port 22: Broken pipe lost connection
  11. [21] Mesh法线的生成算法
  12. 芯烨Xprinter XP-D3601B 打印机驱动
  13. 山东标梵讲解如何在HTML文档中使用CSS样式表?
  14. Java 编程语言单词汇总(建议收藏)
  15. 中国最年轻的亿万富翁_我和一个亿万富翁一起吃饭。 他给我的建议是无价的。
  16. 缺少编解码器,错误代码0xc00d5212 WIN10中AVI格式文件无法播放
  17. 【转自虎嗅】段永平在斯坦福与华人学生交流分享
  18. 详解液晶面板制造全过程
  19. web直播+聊天室功能(阿里云播放器和即时通信IM聊天、消息自动滚动)
  20. 电话号码对应英文单词 (python)

热门文章

  1. 个人做的职业规划以及分析报告(转)
  2. 数据结构 实验14(1-2班):(深入理解索引存储结构)三元组存储的稀疏矩阵建立行列索引并求鞍点
  3. 【自考总结】——管理经济学(一)
  4. 跨境电商 Shopee 的实时数仓之路
  5. 冯大辉Twitter每日推荐一位推友计划推友列表
  6. Excel 数据透视表教程大全之 06 数据透视表八大优势,辅助列用途
  7. OpenBLAS项目与矩阵乘法优化 | AI 研习社
  8. 学习游戏动漫、人物建模收入前景怎么样?
  9. 双十一音响不推荐之sonos
  10. python程序怎么运行-Python如何运行程序