Java / Lombok Interview questions
What is @Synchronized used for?
@Synchronized is Lombok's safer alternative to Java's built-in synchronized
keyword on a method: instead of locking on this (or the class object for a static method), which
exposes the lock to any external code that also happens to synchronize on the same object, Lombok generates a
private, dedicated lock field that only this class's own generated code touches.
@Synchronized public void increment() { counter++; } // generates a private final Object lock = new Object(); // and wraps the method body in synchronized(lock) { ... }
This avoids a subtle but real risk with plain synchronized methods: since this is
a public, externally-visible reference, any other code that happens to synchronize on the same instance could
unintentionally interact with (or deadlock against) your class's own internal locking, something a private,
dedicated lock object entirely avoids.
More Related questions...