第一次做面试官:说说Spring单例模式下Controller层为什么能同时处理多个请求?

就在今年的某一天,小编的领导突然告诉小编,咱们要招新人了,你去从这些简历里筛一下,去面试看看,有没有还不错的。
然后就发现领导突然把小编拽进了一个群里,一封一封的简历把小编彻底淹没。。。。。

就这样小编颤颤巍巍的把几封认为还不错的给到了HR。心想,这第一次面试别人,比自己面试还紧张,这要是面试者有啥问题问我,被问住了,那就只能尴尬的笑一笑吗 emo。。。。。

翌日

“你好呀,我是xx公司的面试官,感谢你参加我们本次的面试,请先做个自我介绍吧!”

“面试官你好,巴拉巴拉巴拉巴拉”。

中间省略一堆项目的介绍和提问。小编真的挺认真对待第一次当面试官的,只要是简历上写了,小编都问了,但是好像面试者不太开心。。。。。。。

下面我们直奔这篇文章的主题


“嗯,我看你项目经历还不错,那我们再聊一聊Java基础和常用框架吧,你可以先说一说Spring单例模式下Controller层为什么能同时处理多个请求”

“嗯… ,因为加锁了。” 面试者答道。

“加锁了…那在什么地方加锁了呢?具体体现在哪里?”

“嗯… 这个我还不太了解,我回去再看看源码。你能给我点思路吗?”

其实面试到这里也快结束了,但是小编还是给面试者解释了一下这个问题。

像我们以前在不用spring的时候,写一个对外的接口,要先继承 HttpServlet 类,去重写doGet和doPost方法,tomcat会在接收到一个socket连接的时候,将其请求参数封装,并调用这个doGet或doPost钩子方法(这里我们只说这两种常用的,其他的PUT HEAD等方法这里不提了)。 调用流程如下。

在这里插入图片描述

其中 FrameworkServlet.processRequest()方法会将你的入参放入到一个ThreadLocal里,这就解决了单例Controller在n个请求下同时处理多个请求的问题。
在这里插入图片描述
因为ThreadLocal是线程独有的,在这里不会出现线程安全问题。

解释完这些后,小编很礼貌的和面试者说。

“我们今天的面试就先到这吧,我们会在本周内给你答复。”

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云下牧羊人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值