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()
メソッドは静的である場合とそうでない場合がありますが、複数の異なるスレッドによって確実にアクセスされます。
上記のアプローチは期待どおりに機能しますか?