サーブレット(resteasy + Hibernate)を使用して予定キューを実装しようとしています。 私の予定コントローラは以下の通りです(もちろん簡略化されています)。Java静的同期とBlockingQueueの実装
public class AppoController{
public synchronized static int createAppoinment(AppObj app){
//get last app no
//insert new app with no+1
//return new app no
}
}
現在のところ、この方法は問題ありません。しかし、私はBlockingQueueの実装について正しい方法のように見えたのですか?微細加工の
定義:私は、静的な同期を使用する場合
私は、静的な同期を使用して、一度複数の予定で複数の要求を送信いけない場合が持っている同じ任命何
は けど、予定は正しい順序で作成されていない
私はここで任意のスレッドを使用しないでくださいが、私はtomcatは自分のスレッドを使用してユーザーからのHTTPリクエストを処理すると仮定します。 これはマルチスレッドアプリケーションですか?
私はここ数日のためにそれをGoogleで検索しているが、私が得た最も近いiがある明確にするために必要なものJava/Android: Synchronized vs Queue implementation
です。
- これは正しい方法ですか?
- 私のシナリオでは、同期化された静的対BlockingQueueの実装の賛否両論は何ですか?
あなたが関連していると思われるその他の入力も歓迎します。ありがとう。
両方のアプローチが単一のJVMに限定されているので、問題ではないと思います。サービスが普及すれば、単一のTomcatインスタンスはすべてのトラフィックを処理することができません。しかし、2つ目の独立したTomcatインスタンスにサービスをデプロイすると、両方のアプローチで一意のアポイント番号が保証されるわけではありません。したがって、この問題を解決する正しい方法は、データベースに予定番号を生成させることです。 –
+1スケーリングの影響をもたらす。その部分を完全に逃した!シンプルな質問ですが、ブロックされている(待機している)ので、同期スレッド方式でサーバスレッドを使い果たす可能性はありますか?ブロッキングキューとは対照的に、スレッド(プロデューサ)は決してブロックされませんか? – eric
はい、ありますが、(a)廃止予定、(b)削除予定、(c)絶対に最後のものです。同期する必要のあるものだけを同期するか、 'java.util.concurrent'から何かを使用してください。 – EJP