- - PR -
サーブレットにおけるprivateなインスタンス変数について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-10 09:30
「共有されるかどうかによ」ってしまう物を「スレッドセーフでない」と言います。
似た話で、「i++; はアトミックでない」という物があります。 | ||||||||
|
投稿日時: 2005-02-10 09:51
パテ太です。 後、long 値と double 値への参照、代入もアトミックではない。 というのがありますね。 ただ、 String型への参照値を代入する。 とString型への参照値を取得する。 はアトミックな処理だと思っていたのですが 違うのでしょうか? [ メッセージ編集済み 編集者: パテ太 編集日時 2005-02-10 09:54 ] | ||||||||
|
投稿日時: 2005-02-10 10:14
Java VMの仕様に「オブジェクトの参照の代入はアトミックな処理でなければならない」という決まりがあるかどうかによりますね。 # VMがその仕様を守ってくれているかどうかにもよりますし、個人的には synchronized を明示しないと不安です。 | ||||||||
|
投稿日時: 2005-02-10 10:25
>それでは本末転倒です。スレッド間で共有されても安全だからスレッドセーフなのであって。
>「共有されるかどうかによ」ってしまう物を「スレッドセーフでない」と言います。 申し訳ないです。スレッドの筋を取り違えてしまっているかもしれません。 メソッドの処理がスレッドセーフであるかどうかではなく、サーブレット全体の処理がスレッドセーフであるかどうか、という意味で申し上げました。 言い換えれば setName() の処理スレッドセーフであっても、オブジェクト自体共有していては予期しない値が getName() で取得できるのではないかと。 |