作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您能否告诉我以下代码是否是线程安全的以及如何测试它:
private static final SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
Calendar cal = new GregorianCalendar();
TimeZone timezone = cal.getTimeZone();
AppCalendar qCal = new AppCalendar(timezone);
qCal.setDateToday();
qCal.setTimeNow();
}
public static String createTempName(final TimeZone timeZone) {
final AppCalendar calendar = new AppCalendar(timeZone);
calendar.setDateToday();
calendar.setTimeNow();
synchronized (sdf) {
return sdf.format(calendar.getTime());
}
}
我提到我的代码在 JVM 7 上运行,我必须使用此上下文提供的日期类型。不幸的是,无法使用 Java 8 中的 thred save LocalDate。我使用从方法 createTempName 返回的字符串作为数据库列中的唯一键。 appCalendar 是扩展 java.util.GregorianCalendar 的类。
真诚的,
最佳答案
是的,它是线程安全的。您可以按照"Java DateFormat is not threadsafe" what does this leads to?中的方法进行测试。 。如果性能是一个问题,我建议将同步更改为 ThreadLocal,如 Making DateFormat Threadsafe. What to use, synchronized or Thread local 中所示。 .
关于java - Simpledate 的线程安全代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47696171/
我是一名优秀的程序员,十分优秀!