Coarse-grained locking, fine-grained locking and custom read/write locks on a Doubly circular LinkedList