SimpleDateFormat
我有许多 Java 日期模式,并希望通过静态引用在不同线程的对象中多次重用它们以提高速度。
代码看起来像这样(在一个名为 的类中FormatClass
):
private static String[] PATTERNS = new String[] {...};
public ThreadLocal<SimpleDateFormat[]> LOCAL_FORMATS = new ThreadLocal<SimpleDateFormat[]>
{
@Override
protected SimpleDateFormat[] initialValue()
{
List<SimpleDateFormat> formatList = new ArrayList<SimpleDateFormat>();
for (String pattern:PATTERNS)
{
formatList.add(new SimpleDateFormat(pattern);
}
return formatList.toArray(new SimpleDateFormat[0]);
}
}
使用上面的代码,另一个类的方法可以format
(或parse
)多个日期字符串,如下所示:
public static void printFormatted(String date)
{
for (SimpleDateFormat sdf:FormatClass.LOCAL_FORMATS.get())
{
System.out.println(sdf.format(date));
}
}
该printFormatted()
方法可能是静态的,也可能不是静态的,但肯定会被多个不同的线程访问。
上述方法会按预期工作吗?