Java synchronized method
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.
Java's synchronized
method is a fundamental part of Java's concurrency mechanism. It provides a way to control access to method scopes and code blocks to ensure that only one thread can execute a particular piece of code at any given time. This is crucial in multi-threaded applications to prevent thread interference and memory consistency errors. This article dives deep into the concept, usage, and examples of synchronized methods in Java.
What is a Synchronized Method?
A synchronized method in Java is a method that is marked with the keyword synchronized
in its declaration. Using this keyword ensures that once a thread has begun executing the synchronized method, no other thread can execute any synchronized method on the same object until the first thread finishes execution.
Syntax
- When a thread enters a synchronized instance method, a lock is acquired on the current object (
this). - When a thread executes a static synchronized method, the lock is acquired on the class object associated with the class.
- Synchronization can significantly affect performance because it can impose a locking mechanism that is expensive in terms of resources.
- Proper understanding of locking and multi-threading is essential to avoid problems like deadlocks.
- For performance reasons, synchronize only critical sections of code rather than entire methods.
- Deadlocks: Situations where two or more threads are waiting for each other to release locks can lead to a standstill.
- Contention: Threads competing for the same lock can lead to performance degradation.
- Thread Safety: While
synchronizedcan help make a class thread-safe, improper usage or other unsafe operations might still lead to unsafe states. - Volatile keyword: Used when threads may read a variable but not modify it, achieving visibility without locking.
- Explicit Locks: Java's
java.util.concurrent.lockspackage provides more flexible and complex locking mechanisms compared to the monitor lock provided bysynchronized. - Atomic Variables: For certain situations,
java.util.concurrent.atomicprovides classes likeAtomicIntegerthat offer lock-free thread-safe operations.
Related reading
- Java synchronized method lock on object, or method?
- Java synchronized method lock on object, or method?
- Java thread executing remainder operation in a loop blocks all other threads
- Java Thread Garbage collected or not
- Java system properties and environment variables
- Java System.currentTimeMillis equivalent in C
- java thread reuse
- Java Thread.currentThread.sleepx vs. Thread.sleepx

OOD Fundamentals
Master object-oriented design from first principles, SOLID, design patterns, and classic interview problems with hands-on coding.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Interview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.