【发布时间】:2014-09-17 08:09:55
【问题描述】:
我已经解决了一个关于随机多线程处理的问题。我很高兴,因为它有效,但我想知道为什么。下面代码中的故障成员称为INPUT_SDF。我认为静态最终成员不需要同步块,但是当我删除它时,一切都出错了。
public class A implements Comparable<A>
{
public static final SimpleDateFormat INPUT_SDF = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss", Locale.US);
...
public void setDate(String string) throws ParseException
{
synchronized (INPUT_SDF)
{
date = INPUT_SDF.parse(string);
}
}
}
我对静态最终成员的理解是错误的吗?或者我的代码中还有其他东西不是线程安全的吗?
【问题讨论】:
-
如果您没有被 Java 8 之前的版本卡住,那么我强烈建议您使用新的 Date API,它包括线程安全的解析器和格式化程序。
标签: java multithreading static-members