gpt4 book ai didi

java - 静态方法,静态变量可以在Web应用程序中被多个线程改变 - jsp

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:47 25 4
gpt4 key购买 nike

我正在做这个项目。有一个类 DefaultsHelper 有:

    public  class DefaultsHelper {

static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd") ;

public static String getDate(int days)
{
GregorianCalendar c = new GregorianCalendar() ;
c.setTime(new Date()) ;
c.add(Calendar.DAY_OF_MONTH, days);
return df.format(c.getTime()) ;

}
}

在 Web 应用程序中 - 如果两个用户同时查看 jsp 并同时调用 getDate 函数 - df 对象是否可能变得不一致从而不返回预期值?

我认为 DefaultsHelper 是一个实用程序类,不再需要实例化新的 df 对象

最佳答案

您为每个线程创建一个新的 Calendar,这很好,但是您正在跨多个线程使用 SimpleDateFormat。如果该类是线程安全的,这会没问题,但事实并非如此

SimpleDateFormatnotorious for being thread-unsafe .只需为每次调用创建一个新调用(即在方法中),或者更好的是,使用 Joda-Time以完全避免线程问题。

关于创建一个格式化程序类作为优化的主题,这是过早优化和无意结果的典型示例。鉴于这是在 JSP 中,HTTP 请求/响应时间将使新格式化程序的安装时间(和资源要求)相形见绌。使您的类线程安全且不可变,并在优化成为问题时担心优化。

关于java - 静态方法,静态变量可以在Web应用程序中被多个线程改变 - jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13745694/

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