Servlet 线程安全问题

什么是线程安全问题

1.存在多线程并发访问
2.存在可修改的共享数据库
当多个线程同时修改同一个数据的时候,后修改的数据会将先修改的数据覆盖,对数据先进行修改的用户读取不到自己的修改的数据。

JVM中存在线程安全问题的数据分析

1.栈内存
栈内存是多列的,即JVM会为每一个线程创建一个栈,所以其中的数据不会共享。另外方法中的局部变量存放在Stack的栈帧中,方法执行完毕,栈帧弹出栈,局部变量消失。不存在线程安全。
2.堆内存
一个JVM只存在一个堆内存,而且是共享的,在堆内存中创建的对象,其中的成员变量可能被多个线程访问。修改其中的值,发生线程安全问题。
3.方法区
一个JVM只存在一个方法区,静态变量和常量放在方法区。常量不能被修改,不存在,而静态变量是多线程共享的,所以静态变量存在线程安全问题。

解决servlet的线程安全问题

1.不定义可访问的成员变量,使用局部变量。
2.使用线程同步机制synchronized。
3.创建一个计数器,来记录线程访问次数,来控制线程安全问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值