次のプロジェクトがあります。
Spring(3.2) ベースの Web アプリケーション (Tomcat 7)、バックグラウンドでいくつかのタスクがあります。
処理する情報を含むキューがあります。このキューは定期的に更新されます (ただし、空になったときのみ)。
また、このキューとプロセスから定期的にデータをキューに入れるスレッドがいくつかあります。
スケジューリングには、ScheduledExecutorService を使用したいと考えていました。
いくつかの問題\質問があります:
このキューを維持する方法は? 私はそれがグローバルであるべきだと思うので。「ホルダー」クラスで静的にする必要がありますか? これは下手なデザインではないでしょうか?
このキューとすべてのタスクを ScheduledExecutorService で初期化するのに適した場所はどこでしょうか? ServletContextLoadingListener は適切な場所ですか? これをSpringで開始する方法はありますか?
コンシューマ スレッドの数を正確に制御する必要がある場合、複数の ScheduledExecutorService インスタンスを使用する必要がありますか?
この場合、ArrayBlockingQueue は適切でしょうか?