Yes, we can declare static method as synchronized. But the calling thread should acquire lock on the class that owns the method.
A thread can execute it's own run() method or another objects run() method.
A condition that occurs when two processes are waiting for each other to complete before proceeding. The result is that both processes wait endlessly.