[Allen]: Q 2. Does making the lock object static, have any influence on any threads ability to execute?
[EFH]: 2) Remember that objects aren't static; only fields can be static. We lock objects, not fields, so the fact that an object is held in a static field has no effect at all on synchronization. I would note that if you're synchronizing using a static reference, then in general you are probably more likely to run into
thread contention than if you synchronize using a nonstatic reference. That is, it's more likely that two differerent threads will synchronize using the same instance (since the static reference is shared by everyone), which would cause the second thread to block until the first one exits the sync block. That's not an absolute rule; I can imagine counterexamples. But I think it's true as a general rule. Of course sometimes it's very much
necessary to synchronize using a static reference. Just be aware that it could well be slower than sync on a nonstatic reference. Analyze the situation and do it if it's necessary; avoid it if it's not.