簡體   English   中英

重入讀寫鎖定特定值

[英]Reentrant Read Write lock on particular value

我的應用程序收到很多傳入的HTTP請求。 每個請求的標頭中都有一個鍵值對。

說Header1 = App1

值App1不斷變化。

接下來是App2,App3等

但是,這些值可以繼續以任何順序出現。 我需要處理競態條件,如果出現與App1的多個請求,我將獲得

的ReentrantReadWriteLock

在App1上。 同時,如果我收到對App2的請求,我將獲得App2的ReentrantReadWriteLock。 兩個鎖都必須互斥,否則我將遇到性能瓶頸,除非執行App1邏輯,否則將不會執行App2。

我想做的是,如果有多個對App1的請求到來,那么他們必須等待。 同時,如果收到App2的請求,它將與當前App1的請求並行執行。 本質上同步唯一值。 我實際上是一無所知。 贊賞指導。 PS我無法使用同步,因為它會導致性能瓶頸

您可以使用ConcurrentMap將請求密鑰映射到鎖,例如:

ConcurrentMap<String, ReentrantLock> locks = ...

ReentrantLock lock = locks.computeIfAbsent(key, k -> new ReentrantLock());
lock.lock();
// do work
lock.unlock();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM