Call to static DateFormat As the JavaDoc states, DateFormats are inherently unsafe for multithreaded use. The detector has found a call to an instance of DateFormat that has been obtained via a static field. This looks suspicous
STCAL_INVOKE_ON_STATIC_DATE_FORMAT_INSTANCE
bug 报错示例:
private static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
private static String demo() {
return SIMPLE_DATE_FORMAT.format(new Date());
}
bug原因:
对于多线程使用,dateformat本质上是不安全的。检测器发现了对DateFormat实例的调用,该调用是通过静态字段获得的。
修复方法:
private static final String SIMPLE_DATE_FORMAT = "yyyy-yyyy/MM/dd HH:mm:ss-dd";
private static String demo() {
return new SimpleDateFormat(SIMPLE_DATE_FORMAT).format(new Date());
}
每次重新生成新的SimpleDateFormat对象,问题解决
文章讨论了JavaDoc中关于静态DateFormat在多线程环境中的不安全性问题,指出通过静态字段获取DateFormat实例可能导致并发问题。提供了解决方案,即每次调用时都创建新的SimpleDateFormat对象以确保线程安全。
1229

被折叠的 条评论
为什么被折叠?



