ThreadLocalとスレッドの安全な日付ツールクラス

4293 ワード

ThreadLocalはマルチスレッドプログラムの同時問題を解決するために新しい考え方を提供し,このツールクラスを用いてスレッドセキュリティ問題を簡潔に解決することができる.ThreadLocalを使用して変数を維持する場合、ThreadLocalはその変数を使用するスレッドごとに独立した変数のコピーを提供するので、各スレッドは他のスレッドに対応するコピーに影響を与えることなく、独立して自分のコピーを変更することができます.スレッドの観点から見ると、ターゲット変数はスレッドのローカル変数のようなものであり、クラス名のLocalが表す意味でもある.
スレッドの安全な日付ツールクラスを実装するには、ThreadLocalを使用します.
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *             
 */
public class DateUtils {
    private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
        @Override
        protected DateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };

    public static Date parse(String str) throws ParseException {
        return threadLocal.get().parse(str);
    }

    public static String format(Date date) {
        return threadLocal.get().format(date);
    }
}