Servlet的线程安全问题
来源:互联网 发布:漫威宇宙实力排行知乎 编辑:程序博客网 时间:2024/04/30 17:13
Servlet线程安全问题
1.什么时候会出现线程安全问题?
1)局部变量
- 存于栈中
- 每个线程都有自己的栈帧
每个线程访问自己的数据,没有冲突
2)成员变量
- 存于堆中
- 堆中的数据被多个线程共用的
多个线程同时修改这样的数据,有冲突
2.如何解决线程安全问题?
- 加锁
3.案例
案例代码如下:
package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class UpServlet extends HttpServlet {private static final long serialVersionUID = 1L;//成员变量double salary = 2000;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {//加锁synchronized(this){salary += 100;//模拟网络try {Thread.sleep(6000);} catch (InterruptedException e) {e.printStackTrace();}//显示数据,输出给浏览器res.setContentType("text/html;charset=utf-8");PrintWriter out = res.getWriter();out.println(salary);out.close();}}}总结:用不同的浏览器访问后得到的结果不同,如不加锁,则可能造成相同的结果
0 1
- Servlet的线程安全问题
- servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- Servlet的线程安全问题
- 树莓派 XBMC常用插件
- 在变化和不确定之中蓬勃成长
- 关于nginx环境下laravel除了默认路由都出现404报错的处理方法
- HTTP和HTTPS的区别
- HDU
- Servlet的线程安全问题
- UDP和TCP的区别
- Android双缓冲技术分析总结
- 在浏览器中输入www.baidu.com后执行的全部过程
- HDU 1556 Color the ball(线段树区间更新区间查询模板)
- Android动画--属性动画
- LintCode解题记录 17.5.3
- linux防火墙设置相关
- 交换机和路由器之间有什么区别?