質問: マルチスレッドでのインスタンス変数 http://itpro.nikkeibp.co.jp/article/column/20070820/279950/ このサイトに以下ような趣旨の記述があり、信じられない気持ちでいっぱいです。 「マルチスレッドのケース(たとえばサーブレットでは、)インスタンス変数はヒープ領域に 保持されるので、複数のスレッドからアクセスされるので情報が書き換えられる場合がある」 信じられないのは、インスタンス変数が書き換えられるということです。 サーブレットではインスタンス変数が共有されるのは理解していますが、 サーブレットから呼ばれるインスタンスで定義されているインスタンス変数も それに該当するのでしょうか。 それとも、サーブレット内だけの話で、サーブレットから呼ばれるインスタンスでは インスタンス変数は独立していると思ってよいでしょうか。 後者の認識ですが、こういう書き方をされると、サーブレットから呼ばれた先でも インスタンス変数が共有されると読めて、怖くて仕方ないです。
回答: > サーブレットから呼ばれるインスタンス インスタンスを呼ぶことはできないので、質問者さんが何を意図しているのか分かりません。 > このサイトに以下ような趣旨の記述があり、信じられない気持ちでいっぱいです。 どうして信じられないのか分かりませんが、一般論としては全く正しいです。 あるインスタンスのインスタンス変数を書き換えるためにはそのインスタンスへの参照を持っている必要があります。したがって、あるスレッドで生成したインスタンスを他のスレッドから書き換えられないようにするには、そのインスタンスへの参照を他のスレッドに見せなければいいだけです。