Hello everyone,


What means "the synchronizing object can double as the object it's protecting" in below statements about synchronization object choosing?

I quote the whole paragraph,

http://www.albahari.com/threading/part2.html

--------------------
Choosing the Synchronization Object
Any object visible to each of the partaking threads can be used as a synchronizing object, subject to one hard rule: it must be a reference type. It’s also highly recommended that the synchronizing object be privately scoped to the class (i.e. a private instance field) to prevent an unintentional interaction from external code locking the same object. Subject to these rules, the synchronizing object can double as the object it's protecting, such as with the list field below:

Code:
class ThreadSafe {
  List <string> list = new List <string>();
 
  void Test() {
    lock (list) {
      list.Add ("Item 1");
      ...
--------------------


thanks in advance,
George