美文网首页
Struts2-线程安全

Struts2-线程安全

作者: 壹壹爸爸 | 来源:发表于2017-12-08 10:05 被阅读0次

1.Struts 2管理Action (开发者不用担心Action的线程安全)

Struts2的 Action 对象为每一个请求产生一个实例,都会创建一个对象,相互独立的;因此,即使在Action中定义了很多全局变量,也不存在线程安全问题。

Struts 2框架在处理每一个用户请求的时候,都建立一个单独的线程进行处理,值栈ValueStack也是伴随着局部线程而存在的。在该线程存在过程中,可以随意访问值栈,这就保证了值栈的安全性。

在Struts 2中,对于每个请求,struts2都会创建一个actionContext(action上下文)是一个局部线程,这就意味着每个线程中的ActionContext内容都是唯一的。

2.使用spring管理struts2的action实例对象

当使用spring管理struts2的action实例对象scope必须配置为prototype或者session,

若配置为singleton则多线程访问时会出现问题,例如actionMessage,fieldError等信息会累加,多用户访问时有的用户访问到的是另一个用户的数据。

scope=“prototype”是为每个请求提供一个action实例(与struts2的机制是一样的)
scope=“session”是为每个会话提供一个action实例。

通常使用prototype,即让spring容器为每个请求提供一个action实例,好处是服务器端不用维护用户状态信息,否则使用session服务器端必须存储状态信息,用户多时占用服务器端内存过多。使用prototype时,必须自己在客户端维护用户的状态,每次访问服务端时将相应状态信息提交给服务器。

3.如果在struts的Action 中使用信号量控制并发的请求个数,要注意action会共享信号量的数字;(生产经验总结)
建议对struts2的action类的每个方法设置单独的信号量

private static final Semaphore semaphore = new Semaphore(100);
public void function() {
semaphore.tryAcquire();
semaphore.release();
}
private static final Semaphore semaphore1 = new Semaphore(100);
public void function1() {
semaphore1.tryAcquire();
semaphore1.release();
}

相关文章

  • Struts2-线程安全

    1.Struts 2管理Action (开发者不用担心Action的线程安全) Struts2的 Action 对...

  • atomic & nonatomic

    什么是线程安全??? 线程安全:多线程操作共享数据不会出现想不到的结果就是线程安全的,否则,是线程不安全的。 at...

  • ConcurrentHashMap源码设计分析

    二、线程安全(Thread-safe)的集合对象:● Vector 线程安全● HashTable 线程安全● S...

  • HashMap 和 Hashtable 的区别

    线程安全: HashMap 是非线程安全的,而 Hashtable 是线程安全的,因为 Hashtable 内部的...

  • Java 的 StringBuffer 和 StringBuil

    区别就是:线程安全,StringBuffer 是线程安全的,StringBuilder 不是线程安全的。 他俩的实...

  • Java单例模式,线程安全

    懒汉式:线程安全,开销大 双重检查锁:线程安全,根据需求使用 静态内部类锁:线程安全,比较推荐 饿汗式:线程安全,...

  • 2018-06-12 第三十七天

    一、线程安全 线程安全的问题,是针对多线程的程序。单线程的情况下,是不存在线程安全问题。 产生线程安全问题的原因:...

  • 线程安全知多少

    1. 如何定义线程安全 线程安全,拆开来看: 线程:指多线程的应用场景下。 安全:指数据安全。 多线程就不用过多介...

  • JAVA 线程安全

    线程安全定义 一个类在可以被多个线程安全调用时就是线程安全的。 线程安全分类 线程安全不是一个非真即假的命题,可以...

  • synchronized锁

    一、线程安全的概念与synchronized 1、线程安全概念 并发程序开发的一大关注重点就是线程安全,线程安全就...

网友评论

      本文标题:Struts2-线程安全

      本文链接:https://www.haomeiwen.com/subject/unnsixtx.html