An implementation of Collection.toString() suitable for classes
with locks. Instead of holding a lock for the entire duration of
toString(), or acquiring a lock for each call to Iterator.next(),
we hold the lock only during the call to toArray() (less
disruptive to other threads accessing the collection) and follows
the maxim "Never call foreign code while holding a lock".
An implementation of Collection.toString() suitable for classes with locks. Instead of holding a lock for the entire duration of toString(), or acquiring a lock for each call to Iterator.next(), we hold the lock only during the call to toArray() (less disruptive to other threads accessing the collection) and follows the maxim "Never call foreign code while holding a lock".