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

回到顶部