0

私の質問は、キューに入れられているスレッドについてです。私の例では、Spring コンテキストが 1 つあります。ステートレス クラスに CalculateTax という名前のメソッドがあります。リクエストが届き、スレッドが作成され (tA)、最終的に CalculateTax メソッドに入ります。同じ「時間枠」内に別のリクエストが入り、別のスレッドが作成されます (tB)。さて、ここで私が理解したいことは次のとおりです。AFAIK tB は、tA がメソッドを終了するまで CalculateTax を実行できません。これは本当ですか?

4

3 に答える 3

3

CalculateTax がローカル変数のみを使用する (つまり、メソッドで宣言される) 限り、スレッド同期の問題は発生せず、複数のスレッドが問題なくメソッドを呼び出すことができます。

ただし、何らかの理由で CalculateTax がクラス レベルで定義された変数を使用し、Singleton パターンを使用している場合 (質問に「singleton」のタグを付けたので、そうであると思います)、スレッド同期の問題が発生する可能性があります。

于 2009-10-26T10:34:41.600 に答える
2

いいえ、それらが並列スレッドである場合は正しくありません。各スレッドは独自の実行スタックにあるため、tA の実行中に実行できるはずです。

これがスレッドの目的です。

于 2009-10-26T10:28:25.967 に答える
0

一般的に言えば、答えは未定義です。「リクエスト」がリモート クライアントからのものである場合、答えは、サービスの公開に使用されるメカニズムの実装の詳細によって異なります。

ただし、実際にプロキシがリクエストをシリアル化するリモート通信フレームワークについては知りません。つまり、ターゲットサービス開発者によって対処されると想定されています(たとえば、サービス実装にスレッドセーフを提供するタスク、またはを使用してすべてのリクエストをシリアル化するタスク)明示的な同期など)。

于 2009-10-26T10:39:53.850 に答える