ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

SimpleDateFormatをスレッドセーフに使用する最も高速な方法

2008-07-10 23:59:54 | PG(Java)

スレッド毎に値を保持するThreadLocalってクラスを初めて認識した。
Threadクラスを使って自前でマルチスレッド化している場合は スレッド毎の値なんて簡単に用意できるから、気にしてなかった。
でもサーブレットの場合は サーブレットコンテナによって1つだけインスタンス化されてマルチスレッドで呼ばれるので、スレッド毎の値を(しかもスレッド毎に一度だけ初期化して)保持するにはThreadLocalはとても便利そうだ。

マルチスレッドセーフでないSimpleDateFormatは、インスタンスを使い回そうと思ったら同期化したり毎回インスタンス生成する必要があったわけだが、ウェブアプリではThreadLocalを使ってスレッド毎に一度だけインスタンス化する方法がとりやすくなるわけだ。
という訳で、ウェブアプリでSimpleDateFormatを使う方法は、高速な順に以下の通りという事のようだ。

  1. ThreadLocalを使用
  2. synchronizedで同期
  3. 毎回newでインスタンス生成

時間計測結果とサンプルソース

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする