[concurrency-interest] The parts of the ReentrantReadWriteLock hold no reference to it

Martin Grajcar maaartinus at gmail.com
Tue Oct 17 17:02:01 EDT 2017


The parts of the ReentrantReadWriteLock holding no reference to it may lead
to a situation where the ReentrantReadWriteLock gets GC'ed while its read
and write locks are still in use. This is alright unless the
ReentrantReadWriteLock is weakly cached as e.g., in Guava Striped, where it
has lead to the bug https://github.com/google/guava/issues/2477.

I'd suggest to add a reference to the enclosing class, e.g., by removing
the static modifier. As all these objects are lightweight and not meant to
have millions of instances, the cost is negligible. The advantage is
decreased chance of buggy user code and avoiding lengthy workarounds like
https://github.com/google/guava/commit/957c1a5455508120d224f6d0d8f3bf
8afa3630f0.

The cost benefit ratio seems to be good.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20171017/463cc56d/attachment.html>


More information about the Concurrency-interest mailing list