Мое приложение получает много входящих HTTP-запросов.В заголовке каждого запроса есть пара ключ-значение.
Say Header1 = App1
Значение App1 продолжает изменяться.
Итак, следующим может быть App2, App3 и т. П.
.Однако эти значения могут продолжать поступать в любом порядке.Мне нужно обработать состояние гонки, при котором, если приходит несколько запросов с App1, я получаю
ReentrantReadWriteLock
на App1.Одновременно, если я получу запрос на App2, я получу ReentrantReadWriteLock для App2.Обе блокировки должны быть взаимоисключающими, в противном случае у меня будет узкое место в производительности, при котором, если не будет выполнена логика App1, приложение App2 не будет выполнено.
Что я пытаюсь сделать, если приходит несколько запросов для App1, то они имеютждать.Одновременно, если получен запрос для App2, он будет выполнен параллельно с текущим запросом App1.По сути синхронизировать по уникальным значениям.Я на самом деле невежественен.Цените руководство.PS Я не могу использовать синхронизированный, так как это приведет к узким местам производительности