If I have
abstract class Parent { static object staticLock = new object(); public void Method1() { lock(staticLock) {
Yes, generally speaking, lock on static objects protect data for all instances of your class.
lock
static
From MSDN:
Best practice is to define a private object to lock on, or a private static object variable to protect data common to all instances.