質問: Javaを現在勉強中ですがスレッドセーフについて混乱しています。 Servletのインスタンス変数が複数のスレッドから参照可能なので注意が必要という事は理解できるのですが、ネットを見ているとインスタンス変数はすべて注意が必要とされているように思います。 newして新たに生成したクラスのインスタンスの変数についても別のスレッドから参照、または、更新が可能という事なのでしょうか? また、Beanなどでsetterを使用してprivateなインスタンス変数に値をセットする場合も別のスレッドで同じようにセットしていたら別スレッドの値が更新されてしまうのでしょうか? こう考えると、値セットや更新系のすべてのメソッドにsynchronizedをかけないとスレッドセーフにならないように思いますが、JSP、ServletのWebアプリ用の書籍などを見ると、synchronizedをかけているものは見当たりません。
回答: >個々のインスタンス内で同じインスタンスを参照し、適切に排他していなければ。 もちろん、その共通インスタンスが全く更新されないのであれば、普通排他自体必要ではないが。