• ベストアンサー

スレッドセーフなクラス一覧

スレッドセーフなクラス一覧が分かるWebサイトや、そのクラスがスレッドセーフかどうか知る方法を探しています。 複数スレッドで共有オブジェクトにアクセスする際に、synchronizedブロックをかけるのですが、そのオブジェクトがスレッドセーフかどうかすぐに分かる方法があると便利だなぁと思って探しています。 例えば、Stringはスレッドセーフ、SimpleDateFormatはアンスレッドセーフ等の情報が一覧で欲しいと思っています。 なるべく多くのクラスを網羅していればそれだけありがたいです。 ご存知の方がおられましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.1

 たしかにそういったリストがあれば便利だけれど実用になるほどの数を網羅したものは多分ない。  最もそれに近いものは各クラスのドキュメントそのものだと思う。ドキュメントにスレッドセーフである旨が記載されているもの以外はスレッドセーフではないとして取り扱うべき。何も書かれていなくてもスレッドセーフである可能性もあるかもしれないが、そうでないものをそうであるかのように扱うよりはマシ。判断が必要なら面倒がらずドキュメントを参照しよう。  スレッドセーフであることはそのクラスのソースがあってもぱっと見る程度では簡単なものならいざ知らず中々判断がつき難い。「でない」ことを判断するのはそれよりは簡単だが。クラスの設計者や実装者がスレッドセーフであるとして作成してドキュメントに明記したかどうかで判断するのが一番簡単だと思う。  ところでStringのAPIドキュメントにはスレッドセーフとは書かれていないが、定数とかイミュータブルであることが書かれているのでスレッドセーフであるとして扱える。判断するときはこういったワードにも注意するといい。

yamadeen
質問者

お礼

今更ですがありがとうございました。

yamadeen
質問者

補足

回答ありがとうございます! うーむ。やはり無いんでしょうかねぇ。 確かにスレッドセーフ、イミュータブル等で検索した限りでは見つけられなかったです。

関連するQ&A

専門家に質問してみよう