spring mvc 多线程并发访问总结
来源:互联网 发布:剑三菊花插件dbm数据 编辑:程序博客网 时间:2024/06/08 18:20
spring中的bean默认是单例的,这样如果我们写的bean是有状态的就会产生线程安全问题,有状态的bean就是指类中存在实例变量,服务器会为每个请求开一个线程,这样当一个线程修改了实例变量,另一个线程访问的变量就是被修改过的,这就是线程不安全的。
我们以controller为例,下面是测试代码
@Controllerpublic class testController {private int i=0;@RequestMapping("test")public ModelAndView test( ){ModelAndView mav=new ModelAndView("test");mav.addObject("test", i++);return mav;}}前台通过${test }获取值。分别发送三次请求,前台页面取得的值为 :
0 1 2
若想在线程安全情况下使用有状态的bean有以下两种方法:
第一种在@controller之前加上@Scope("prototype"),将spring中的bean改为多例。
前台通过${test }获取值。分别发送三次请求,前台页面取得的值为 :0 0 0
第二种使用threadLocal,代码如下
@Controllerpublic class testController {ThreadLocal<Integer> i=new ThreadLocal<Integer>(){@Overrideprotected Integer initialValue() {return 0;};};@RequestMapping("test")public ModelAndView test( ){ModelAndView mav=new ModelAndView("test");mav.addObject("test", i.get());i.set(i.get()+1);return mav;}}前台通过${test }获取值。分别发送三次请求,前台页面取得的值为 :
0 0 0
,
阅读全文
0 0
- spring mvc 多线程并发访问总结
- Spring-MVC并发访问的线程安全性问题
- Spring-MVC并发访问的线程安全性问题
- Spring MVC并发访问的线程安全性问题
- Spring并发访问的线程安全性问题(高度总结)
- Spring并发访问的线程安全性问题(高度总结)
- Spring并发访问的线程安全性问题(高度总结)
- Java多线程并发总结
- Linux多线程并发总结
- Java多线程并发访问解决方案
- Java多线程并发访问解决方案
- Java多线程并发访问解决方案
- java多线程并发访问解决方案
- 防止多线程并发访问SQLite。
- java多线程并发访问解决方案
- Android多线程并发访问网络
- sqlite能不能多线程并发访问
- 【java多线程编程核心技术】2.对象及变量的并发访问(上)-笔记总结
- Tensorflow--Tensorboard 可视化好帮手
- Oracle归档-文件维护及进程的维护
- springboot工程QA
- Hibernate框架
- 面向对象编程(oop)的本质
- spring mvc 多线程并发访问总结
- PDF组件Spire.PDF for .NET V3.9.360发布 | 支持打印特定页面
- 颜色变化
- @RequestBody的使用
- java之String
- 页面侧滑效果
- Jsp 中获取本机IP
- 面试题记录
- 鼠标冒泡事件