AsyncContext.start()は、Webコンテナ内からスレッドを開始する方法であると誰かが指摘しました。この呼び出しがJavaEEに追加された意図されたユースケースは何ですか?
質問する
404 次
1 に答える
2
AsyncContext.start()が新しいスレッドを開始する可能性はほとんどありません。ほぼ確実に、(要求の処理に使用されるのと同じスレッドプールからの)コンテナースレッドを使用します。たとえば、Tomcatは、要求処理スレッドプールのコンテナスレッドを常に使用します。
ユースケースは、メインスレッドが続行できるようになる前に、Runnableに入力したものが完了するのを「メイン」スレッドが待機する必要がない場合です。
私が考えることができる例のほとんどはかなり工夫されていますが、5つの接続されたクライアントでサーブレット3.0非同期を使用して実装されたある種のメッセージングアプリケーションがある場合、メインスレッドは5つのクライアントのそれぞれのAsyncContextを繰り返し、それぞれでstart()を呼び出す可能性がありますブロードキャストメッセージを送信するコンテキスト。そうすれば、メインスレッドが遅いクライアントによって保持されることはありません。
于 2012-04-25T10:22:58.783 に答える