我有一个处理来自 3rd 方站点的回调的 servlet S。
回调调用以特定顺序发生。因此,我需要将它们排队。
我建议使用内存队列,如
java.util.ConcurrentLinkedQueue
所以逻辑看起来像这样:
- Servlet S 接收回调并将接收到的项目排队到队列 Q 中。
- 此时,承载 servlet S 实例的线程将终止。
- 一个消费者线程从 Q 中读取并依次处理每一个。
据我了解,Servlet S 的每个实例都在其自己的线程中执行。
如何为将服务于 Queue 的整个 webapp(战争)创建单个消费者线程?基本上我需要单例实例:
- 线程池
- 并发链接队列