0
staticメソッドについて
どうもよく分からないのですが、static変数から考えると、
スレッドA,スレッドB、メソッドAがあるとしたら、
スレッドAがメソッドAを呼び出し、処理が終わらないうちに
スレッドBがメソッドAを呼び出しても待たされる。スレッドAに値が返されたらスレッドBからの要求にこたえる。この解釈であってますか?
0
どうもよく分からないのですが、static変数から考えると、
スレッドA,スレッドB、メソッドAがあるとしたら、
スレッドAがメソッドAを呼び出し、処理が終わらないうちに
スレッドBがメソッドAを呼び出しても待たされる。スレッドAに値が返されたらスレッドBからの要求にこたえる。この解釈であってますか?
0
間違っています。
synchronized 修飾子を使っているかいないか、同期化されるクラスをフィールドとして使っているかいないか等何通りかのパターンがあり、それにより動作が異なります。
例としてあげている解釈はその内の一つのパターンです。
0
メソッドAは同時に実行されます。
static変数がどのような順番でアクセスされるかは、
スレッドAとスレッドBの進行状況によります。
static変数にIDをセット
処理1
処理2
というメソッドAをスレッドAとBが呼び出すと、例えば
スレッドAがstatic変数にID="A"をセットする
スレッドAの処理1(ID="A")
スレッドBがstatic変数にID="B"をセットする
スレッドBの処理1(ID="B")
スレッドBの処理2(ID="B")
スレッドAの処理2(ID="B")
なんてことになります(もっともこの場合は、IDをstaticに入れること自体がおかしいけど)。
これを防ぐのが同期です。
0
あ、static変数でなくてstaticメソッドでしたか。
失礼しました。
質問から6ヶ月以上経過しているので、回答を書き込むことはできません。