2016-06-24 9 views
1

ここには、互いに矛盾しているように見える2つのリンクがあります。私はすぐにドキュメントを信頼したい:サーバー上のジャージーによるマルチスレッド

Link 1

要求処理は、それがすでにマルチスレッド化されている

Link 2

同期処理モードではデフォルトで動作します。

私の質問:

正しいです。同期とマルチスレッドの両方が可能ですか?

はなぜドキュメントは、次の?:

リソースメソッドの実行結果を計算するのに長い時間がかかることが知られている例で

、サーバ側の非同期処理モデルが使用されなければならないと言うん

ドキュメントが正しい場合、デフォルトアクションはなぜ同期していますか?すべてのリクエストは、デフォルトでユーザーエクスペリエンスのためにクライアントサイドのJavaScriptで非同期であるため、サーバー側のデフォルトアクションも非同期である必要があります。

クライアントが特定の順序で要求を処理する必要がない場合、誰がどのように操作を「費用がかかりますか」気にします。すべての操作が単純に非同期である必要はありませんか?サーバー上の

答えて

7

要求処理は、各要求を別個のスレッドで処理され、同期処理モード

デフォルトで動作します。要求は処理が完了するまで、その要求がスレッドを保持するため、要求は同期しているとみなされます。

すでにマルチスレッド化されています。

はい、サーバー(コンテナ)はマルチスレッドです。入ってくるリクエストごとに、スレッドプールからスレッドが取得され、そのリクエストは特定のリクエストに関連付けられます。リソースメソッドの実行が結果を計算するのに長い時間がかかることが知られているところ、我々はホールドアップしないように、サーバー側の非同期処理モデルは、はい

を使用する必要がある場合に

コンテナスレッド。コンテナスレッドプールには、要求を処理するためのスレッドしかありません。長い処理要求でそれらをすべて保持していると、コンテナのスレッドが不足し、他の要求がブロックされることがあります。非同期処理では、Jerseyはスレッドをコンテナに戻し、要求処理自体を独自に処理しますスレッドプールをプロセスが完了するまで実行してから、コンテナに応答を送信します。コンテナに返信してクライアントに返します。

クライアントが特定の順序で要求を処理する必要がない場合、操作者は操作がどのように「高価」であるか気にします。

クライアントがここで何をしなければならないのか分かりません。あるいは少なくともあなたがどのように質問しているかの文脈では。ごめんなさい。

すべての操作が単純に非同期である必要はありませんか?

必ずしもすべてのリクエストが高速である必要はありません。あなたはそれを議論することができますが、それはパフォーマンステストを必要とし、数字はお互いに対立してそこから決定することができます。すべてのシステムが異なります。

+0

@peeskilletジャージーコンテナがデフォルトで使用するスレッドの正確な数は何ですか? –

関連する問題