From: takagi@etl.go.jp ("TAKAGI, Hiromitsu" )
To: java-house-brewers@java-house.etl.go.jp
Message-ID: <20010107154817.01BF.TAKAGI@etl.go.jp>
Date: Sun, 7 Jan 2001 16:04:02 JST
References: <3A533F1B.6080602@sons.co.jp>

[JavaHouse-Brewers:39847] Re: DateFormat/SimpleDateFormat is not threadsafe.

[Prev][Next] | [Threads][Index] | [Search][Topics]
On Thu, 4 Jan 2001 00:06:57  JST
Tsunehisa Kazawa <kazawa@sons.co.jp> wrote:
> 1. Collection API は、インスタンスレベルで何らかの動的な内部状態を持つオ
> ブジェクトであることが明らかにわかっており、同期化せずにその内容を変更す
> る操作をすれば競合状態が発生することは (経験の浅いプログラマでも) 比較的
> 容易にわかりますが、対して、DateFormat/SimpleDateFormat の format/parse
> の場合は、インスタンスレベルの動的な内部状態を持つことの実装上の必然性を
> とても想像しにくいです (ソースを見ても、なぜそれをインスタンス変数とする
> のか、僕にはその必然性が理解できませんでした)。

そのとおりでしょう。フォーマット系のオブジェクトが内部状態を持つという
のは非常識です。さすがはTaligentらしい、クソなセンスの設計ですね。

java.text.SimpleDateFormatのソースコードを読みましたが、calendarという
インスタンス変数があって、これがガンのようですね。下手糞なコーディング
の典型です。関連記事[j-h-b:9257]

反面教師的な意味でSimpleDateFormatのソースコードを読むことを皆さんにお
勧めします。

> > > もうずいぶん前から Bug ID:4093418 などとして知られていた問題のようです
> > > が、僕はおとといまで知りませんでした。
> > 設計通り動作している(working as design)とコメントされて,クローズして
> > いますから, バグではなく仕様でしょう.

新たに BugID:4228335 ができていて、こちらは「State: In progress, bug」
となっているようです。今、「Votes: 39」です。

ここの投稿者の主張にあるように、java.text.NumberFormatにも同様の欠陥が
あったそうで、それは BugID:4101500 でfixされているそうではないですか。
これはあきらかにバグでしょう。パッチも投稿されています。 


高木 浩光@電子技術総合研究所
http://www.etl.go.jp/~takagi/


[Prev][Next] | [Threads][Index] | [Search][Topics]
Follow-ups:
039858 kazama@ingrid.org (Kazuhiro Kazama)