So-net無料ブログ作成
検索選択

java.text.SimpleDateFormat is not Thread Safe(汗)

しりませんでした。orz
ほんともう恥ずかしいです。java暦何年目かなんていえません。

そしておもいっきり下記のようにstatic定義をしていました。
private static SimpleDateFormat fmt =new SimpleDateFormat("YYYY");
private static void formatDate(Date date) { return fmt.format(date); }
結局ThreadLocalの方法で対応してみたのだけれど
じゃあその修正したプログラムが該当SimpleDateFormatの使用箇所において
ちゃんとスレッドセーフになったのか?ということを確認するいい方法がなかなか思いつかない。

せめて取得したインスタンスが別のインスタンスだと確認できればいいんだけれど
インスタンスごとのIDみたいなものって取得できないんだよなあ。
オブジェクト指向ってオブジェクトは暗黙的にIDをもってるんじゃないんだっけ?もってるなら取得させてほしい。

とりあえず「別のインスタンスの場合別の値が出力されることが望ましい」というSunの希望が添えられている
Object.hashCode()の値を見てみたんだけれど
SimpleDateFormatはどうやらSunの望みはききいれてくれていないらしく
指定したパターンが同じだと別のインスタンスでも同じhashCode()を返してくるというような動きになった。
どこまでも使えないやつめ。。

って、つまるところSimpleDateFormatのラッパークラスを作って中にIDとなる値をもたせとけばまあ済む話ですが。
他にやりようってないのかしら?(・3・)
コメント(0) 

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。