Junior — Middle
When is it preferable to use a synchronized method, and when a code block to ensure thread safety?
sobes.tech AI
Answer from AI
In Java, a synchronized method (synchronized method) locks the entire method for one thread, which is convenient when you need to protect all operations within the method from concurrent access.
Using a synchronized method is preferable when:
- The entire logic of the method must be executed atomically.
- The method is small and does not contain long operations, so as not to block the thread for a long time.
A code block with synchronized (synchronized block) is preferable when:
- You need to synchronize only part of the method, not the entire method.
- There is an opportunity to reduce the scope of locking, increasing parallelism.
- Synchronization is needed on a specific object, not on the current instance.
Example:
public void addItem(Item item) {
// Non-critical part
prepareItem(item);
synchronized(this) {
// Critical section
items.add(item);
}
}
Thus, the choice depends on how much of the code needs to be protected and how important performance is.