gpt4 book ai didi

java - 访问 servlet 上下文中的对象时是否需要同步块(synchronized block)?

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:08 26 4
gpt4 key购买 nike

我有一个 servlet,它访问和修改存储在 servlet 上下文中的对象“myBean”。是否需要使用同步块(synchronized block)显式锁定“myBean”,或者默认情况下会维护它?示例代码:

   public class StopFilesMergeServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
MYBean myBean = req.getServletContext().getAttribute("myBean");
synchronized (myBean) { //is this necessary?
int oldValue = myBean.getProperty1();
int newValue = oldValue + 10;
myBean.setProperty1(newValue);
}
...
return;
}

最佳答案

Spring 不会在幕后做任何事情来保证 bean 的线程安全。

Is explicit locking "myBean" with syncronized block needed or it is mainteined by default?

从你的例子来看,你的意图并不清楚。如果您要从 bean 读取值、比较它然后更新,则需要显式锁定。更好的选择是使 myBean 自身线程安全(如果它有状态)。

关于java - 访问 servlet 上下文中的对象时是否需要同步块(synchronized block)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533899/

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