Javaサーブレットが非同期で実行される可能性があると聞きました。しかし、これは、単一のサーブレットへのリクエストが非同期的に処理されること、または異なるサーブレットへのリクエストだけが非同期であることを意味します。私は2つの同時要求、終了する最初のための第二待ちをする際に、今HttpServletへのHTTPリクエストは非同期で処理されますか
public class DummyServlet extends HttpServlet
{
...
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
response.setContentType("text/plain; charset=utf-8");
PrintWriter writer = new PrintWriter(response.getOutputStream());
writer.write("DummyServlet invocation");
System.out.print("Invocation: " + counter);
Thread.sleep(5000);
System.out.println(" ... done.");
counter++;
writer.flush();
writer.close();
}
:
基本的に、私は私のプロジェクトでは、この1つのサーブレットを持っています。 このシナリオでは、どのように非同期動作を実現できますか?
更新:リクエストは非同期で処理されます。リクエストは非同期では生成されませんでした。
サーブレットのメソッドは同期型で、個々の要求は同期して処理されます。ただし、コンテナは個々の要求に個別のスレッドを使用するため、異なるスレッドで同時に実行する必要があります。なぜ2つの呼び出しが連続して実行されると思いますか? – fvu
'2つの同時リクエストを行うと、2番目のリクエストは最初から最後まで待機します。 '与えられたコードが真でない場合、どちらも別のスレッドで提供されます –
出力には正確に何が表示されていますか? – hvgotcodes