gpt4 book ai didi

java - 放置和弹出值堆栈的 Struts 2 拦截器是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 10:57:47 25 4
gpt4 key购买 nike

考虑一个将对象放入值堆栈的拦截器,执行一些逻辑然后将其删除:

ActionContext.getContext().getValueStack().set("user", CurrentUser);

doSomeLogic();

ActionContext.getContext().getValueStack().pop();

Are Interceptors in Struts2 Thread UNsafe? 中所述拦截器是线程安全的,但是当我们在上面的代码中处理值堆栈时,我想知道这是否可以,或者我们应该同步上面的代码部分。

作为次要问题,是否有更好的方法从值堆栈中删除元素?

最佳答案

As mentioned in Are Interceptors in Struts2 Thread UNsafe? the interceptors are thread safe

拦截器不是线程安全的;然而,在 JAVA 中,方法是

如果您既不使用static 变量也不使用实例变量,方法中实例化的所有内容都是线程安全的,这意味着访问该方法的多个线程将顺序访问它,或者将在包含类的新实例中访问它。

变量永远不会混合,并且您不需要同步任何东西

此外,ValueStack是保存在ActionContext中的,也就是ThreadLocal,因此绝对是线程安全的。


顺便说一句...为什么不为此使用 Session 呢? :)

关于java - 放置和弹出值堆栈的 Struts 2 拦截器是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32454455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com