"Many books and articles recommend locking on
thisfor instance methods and
Typeobject for whatever type you're writing code in) for static methods. I believe this is a bad idea, because it means you have less control over your locks. Other code may well end up locking on the same object as you do within your code, which makes it far harder to ensure that you only obtain locks in an appropriate order."
I had never thought about this earlier, perhaps because I have not done much serious thread work before ;)