我一直在寻找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/