java中的多线程安全问题

来源:互联网 发布:ds网络发布会 编辑:程序博客网 时间:2024/06/08 16:11

关于多线程安全问题,简单说一下

两个概念

多线程:多个方法在同一时间并行

并发访问:多个线程在同一个时间点访问同一个资源


线程安全问题产生的原因:
 * 需要确定以下几个问题:
 * 1.是否是多线程环境
 * 2.是否有共享数据
 * 3.是否有多条语句操作共享数据

前两条满足,基本就有线程安全问题了.
1.类中有成员变量,容易被多个线程竞争.导致产生安全问题,因为
spring的单利模式思考
 1.controller的创建是spring的Ioc管理的,单利,每个用户访问都会为其创建一个对象,一个人有一个.互不冲突.

 2.如果controller里有成员变量.可能产生线程安全问题,所以不建议使用成员变量,如果使用请考虑同步(和servlet一样).但是我们一般在controller中只是定义Service,在Service中定义dao但是它俩都让spring管理.都是单利.所以避免了线程安全问题

 3.如果使用注解的方式开发,注解直接找到方法,访问的时候也是,所以都是局部变量,不会产生安全问题

 4..事务机制有效降低了安全问题.数据库本身的事务支持,避免了多线程同时操作同一数据.

所以springmvc是安全的

0 0