Makecodeeasy is a blog about programming specially Java. Tutorials written are of core java, servlets, jsp, spring framework and design patterns and other programming language.
This helps to refresh programming knowledge, keep updated with latest information, prepare for interview, and certifications.
Static Method Call - When we make a call to a static method (either directly from class or any object of that class), the Class object of that Class involves in that call. Every Class has only one Class object.
Non-static Call- When we call a non-static method (always from an object of that class), it works for that object only (which is of that class only). A class can have as many objects (if not restricted though some design patterns or lack of memory).
Now, lets come to Static and Non-static Synchronized method calls -
Static Synchronized Method Call - Whenever a thread accesses any synchronized static method, it acquires the lock on Class object of that class and hence no other static method can be accessed of that class.
Non-static Synchronized Method Call - As the non-static methods can be accessed through only objects of that class. So whenever, a thread enters any non-static synchronized method, it acquires the lock on the object through which the call has been made. Hence the other threads can still access the same or other non-static methods using other unlocked objects (free resources) of that class.