Java中的线程安全循环缓冲区
考虑几个并行运行的Web服务器实例。每个服务器都有对单个共享“状态保持器”的引用,该角色的作用是保留N
来自所有服务器的最新请求。
例如(N=3
):
Server a: "Request id = ABCD" Status keeper=["ABCD"]Server b: "Request id = XYZZ" Status keeper=["ABCD", "XYZZ"]
Server c: "Request id = 1234" Status keeper=["ABCD", "XYZZ", "1234"]
Server b: "Request id = FOO" Status keeper=["XYZZ", "1234", "FOO"]
Server a: "Request id = BAR" Status keeper=["1234", "FOO", "BAR"]
在任何时间点,都可以从监视应用程序中调用“状态保持器”,该应用程序读取了最近N
的SLA报告请求。
在Java中实现这种生产者-消费者方案的最佳方法是什么,使Web服务器具有比SLA报告更高的优先级?
CircularFifoBuffer似乎是容纳请求的合适数据结构,但是我不确定实现高效并发的最佳方法是什么。
回答:
Buffer fifo = BufferUtils.synchronizedBuffer(new CircularFifoBuffer());
以上是 Java中的线程安全循环缓冲区 的全部内容, 来源链接: utcz.com/qa/399915.html