【发布时间】:2019-03-21 06:32:48
【问题描述】:
我的应用程序收到大量传入的 HTTP 请求。在每个请求的标头中,都有一个键值对。
说 Header1=App1
App1 的值不断变化。
所以接下来可以是 App2、App3 之类的
。然而,这些值可以以任何顺序继续出现。 我需要处理竞争条件,如果 App1 有多个请求,我会获取
可重入读写锁
在 App1 上。同时,如果我收到 App2 的请求,我将获得 App2 的 ReentrantReadWriteLock。这两个锁需要互斥,否则我将遇到性能瓶颈,除非执行 App1 逻辑,否则不会执行 App2。
我想要做的是,如果对 App1 的多个请求出现,那么他们必须等待。同时,如果收到对 App2 的请求,它将与当前的 App1 请求并行执行。本质上同步唯一值。 我其实一无所知。感谢指导。 附言我不能使用同步,因为它会导致性能瓶颈
【问题讨论】:
-
听起来你想要一个 table 锁。 (例如,
java.util.Map<String, ReentrantLock>)。
标签: java multithreading concurrency locking reentrantlock