0

他の誰かが作成したWebアプリケーションをサポートしていますが、おかしな動作が見られます。このアプリケーションは、Struts、Spring MVC、およびTomcatをアプリサーバーとして使用します。

Webアプリは、サードパーティによってフレームに表示され、リンクを介してアクセスされます。

リンクがクリックされると、2つのリクエストが2つのスレッドでTomcatに送信されます。1つのスレッドがユーザーを認証し、データを初期化することになっています。もう一方のスレッドは、初期化されたデータを使用して画面をレンダリングします。

問題: 依存スレッドが最初に開始され、画面にエラーが表示されることがあります。ただし、初期化スレッドはまだ処理中であり、依存スレッドの後に完了するため、結果がユーザーに返され、適切なデータが画面に表示されます。問題は、初期化スレッドの実行中に表示されるエラーです。

質問: この動作は、ストラットまたはSpring MVCに固有のものですか?この動作を引き起こしているアプリケーションには何も表示されません。

個人的には、1つのスレッドを開始し、同期呼び出しで初期化と表示を行いたいと思います。

助けてくれてありがとう。

4

1 に答える 1

1

これは競合状態と呼ばれます。スレッドを扱い始めるときに非常に一般的です。それはあなたがしていることとは何の関係もありませんが、実行中のコードの非常にランダムな振る舞いと、スレッドが起動することを決定した方法では、それが彼らが行うことです。

于 2012-09-28T15:10:08.263 に答える