3

ユーザーの一部のエンティティを更新するためにサードパーティ サービスを呼び出している間、Spring MVC リクエスト ハンドラーで条件が発生するのを待つ必要があります。

待機時間は平均約 2 秒です。

Thread.sleepリモート呼び出しが完了し、エンティティがデータベースで更新されるようにするために呼び出しています。

Thread.currentThread().sleep(2000);         

この後、更新されたモデルをデータベースから取得し、ビューを表示します。

しかし、このコントローラー/リクエスト ハンドラーで処理するために到着する並列リクエストにはどのような影響がありますか?

並列リクエストも待機しますか?

それとも、別のスレッドに生成されるので、現在のリクエストで発生した遅延の影響を受けませんか?

4

1 に答える 1

2

やっていることが時々うまくいくかもしれませんが、それは信頼できる解決策ではありません。

Java Future インターフェースと構成済みの ExecutorService を使用すると、何らかの操作を開始し、結果が準備できるまで (またはオプションで一定の時間が経過するまで) 1 つ以上のスレッドを待機させることができます。

ここでドキュメントを見つけることができます: http://download.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html

于 2011-09-26T17:24:00.577 に答える