Classes that contain abstract methods and classes that inherit abstract methods without overriding them are considered abstract classes. It is a compile-time error to instantiate an abstract class or attempt to call an abstract method directly. Code will therefore not run at the same time as other code that needs access to the same resource. Each object has one lock associated with it and each class has exactly one lock. Lock is released when code is done executing.
Locks are advisory.
Locks are mutex. No spin locks.