我一直在寻找ThreadLocal的用法,并登陆了这个受欢迎的页面When and how should I use a ThreadLocal variable?

被接受的,投票最高的答案说



而代码的核心部分是

 return new SimpleDateFormat("yyyyMMdd HHmm");

哪个不会改变或不会受到并发执行的影响,或者会被并发执行吗?

您能否强调一下这可能是个问题?为何在这里需要线程安全对象?

在其他情况下,我也遇到了java.security.MessageDigest;的类似用法,这对我也很困惑。如果有人可以解释其原因,那将是很棒的,如果可能的话,可以使用一些有用的代码。

最佳答案

好吧,以 format(Date, StringBuffer, FieldDelegate) 的第一行为例:

calendar.setTime(date);
calendar中有一个实例成员,因此那里显然不是线程安全的。首先是一场日期竞赛(因为setTime不同步),但更明显的是,有人可以通过该函数在部分时间设置日历的时间(在calendar中访问subFormat的值,format调用该值) 。

关于java - 为什么有人需要线程安全的SimpleDateFormat对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23535291/

10-13 07:07