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 courseInterview Questions practice on Codemia
Over 8,000 real interview questions from top companies, searchable by company and role.