[concurrency-interest] synchronization based on a key

bhm bheem at sbcglobal.net
Thu May 24 13:48:30 EDT 2012


Thanks.

If I understand this correctly, this keeps a collection of lock
objects (Lock/Semaphore/ReadWriteLock) and smear method can map
multiple keys to same index and
so same lock and amount of concurrency is contained by the size of
collection of lock objects (eager or lazy)

On Thu, May 24, 2012 at 12:13 PM, Dimitris Andreou
<jim.andreou at gmail.com> wrote:
> http://code.google.com/p/guava-libraries/issues/detail?id=859#c11
>
> The file attached to the linked comment might end up in guava, and deals
> with this very problem.
>
> On May 24, 2012 7:27 AM, "bhm" <bheem at sbcglobal.net> wrote:
>>
>> I have a method that needs to be synchronized based on a key passed as
>> parameter, that is, for same key multiple threads shouldn't be
>> running. Following is what I did--
>>
>>
>> static final ConcurrentMap<String,Boolean> IN_PROGRESS =
>>   new ConcurrentHashMap<String,Boolean>();
>>
>> void foo(String key){
>>    if(null == IN_PROGRESS.putIfAbsent(key, Boolean.TRUE)){
>>      // no other thread is processing this key
>>      try{
>>          // process this key
>>      } finally {
>>         // done with processing this key
>>         IN_PROGRESS.remove(key)
>>      }
>>    } else {
>>      // some other thread is running this key, discard it
>>    }
>> }
>>
>> this works if I need to discard the request to process the key from
>> thread t1 when another thread, t2, is processing that key.
>>
>> I need help to do following-
>> make thread t1 wait while t2 is processing the key and resume t1 when
>> t2 is finish processing same key.
>>
>> I'm aware that if there are multiple threads t1,t3,t4.. etc waiting
>> for t2 to finish anyone of these thread can wake up and start
>> processing the key irrespective of their order (if there is any) of
>> asking to process the key.
>>
>> Thanks for help.
>>
>> Bheem
>> _______________________________________________
>> Concurrency-interest mailing list
>> Concurrency-interest at cs.oswego.edu
>> http://cs.oswego.edu/mailman/listinfo/concurrency-interest



More information about the Concurrency-interest mailing list