I have asked a question badly over here Lock on a variable in multiple threads so for clarity I am going to ask it here and hope I can ask it correctly.
I've written a blog post about having multiple threads add values to a list and using lock() to prevent the writes from colliding along with why this needs to be done.