一、ServletContext、HttpSession是线程安全的;ServletRequest是非线程安全的
参考:https://www.cnblogs.com/digdeep/p/4429098.html
1、保存在ServletContext、HttpSession中的对象必须是线程安全的;
在Java web项目中,我们经常要将一个登陆的用户保存在HttpSession中,而这个User对象就是像下面定义的一样的一个Java bean。
为什么将一个这样的Java对象保存在HttpSession中是有问题的,至少在线程安全方面不严谨的,可能会出现并发问题。
Tomcat8.0中HttpSession的源码在org.apache.catalina.session.StandardSession.java文件中,源码分析如下(截取我们需要的部分):
我们看到每一个独立的HttpSession中保存的所有属性,是存储在一个独立的ConcurrentHashMap中的:
protected Map<String, Object> attributes = new ConcurrentHashMap<>();
所以我可以看到 HttpSes