- ベストアンサー
スレッドセーフなクラス一覧
スレッドセーフなクラス一覧が分かるWebサイトや、そのクラスがスレッドセーフかどうか知る方法を探しています。 複数スレッドで共有オブジェクトにアクセスする際に、synchronizedブロックをかけるのですが、そのオブジェクトがスレッドセーフかどうかすぐに分かる方法があると便利だなぁと思って探しています。 例えば、Stringはスレッドセーフ、SimpleDateFormatはアンスレッドセーフ等の情報が一覧で欲しいと思っています。 なるべく多くのクラスを網羅していればそれだけありがたいです。 ご存知の方がおられましたら教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
たしかにそういったリストがあれば便利だけれど実用になるほどの数を網羅したものは多分ない。 最もそれに近いものは各クラスのドキュメントそのものだと思う。ドキュメントにスレッドセーフである旨が記載されているもの以外はスレッドセーフではないとして取り扱うべき。何も書かれていなくてもスレッドセーフである可能性もあるかもしれないが、そうでないものをそうであるかのように扱うよりはマシ。判断が必要なら面倒がらずドキュメントを参照しよう。 スレッドセーフであることはそのクラスのソースがあってもぱっと見る程度では簡単なものならいざ知らず中々判断がつき難い。「でない」ことを判断するのはそれよりは簡単だが。クラスの設計者や実装者がスレッドセーフであるとして作成してドキュメントに明記したかどうかで判断するのが一番簡単だと思う。 ところでStringのAPIドキュメントにはスレッドセーフとは書かれていないが、定数とかイミュータブルであることが書かれているのでスレッドセーフであるとして扱える。判断するときはこういったワードにも注意するといい。
お礼
今更ですがありがとうございました。
補足
回答ありがとうございます! うーむ。やはり無いんでしょうかねぇ。 確かにスレッドセーフ、イミュータブル等で検索した限りでは見つけられなかったです。