WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Java Concurrency · Intermediate · question 27 of 100

Can you explain what the synchronized keyword does and how it works internally?

📕 Buy this interview preparation book: 100 Java Concurrency questions & answers — PDF + EPUB for $5

The synchronized keyword in Java is used to create a block of code that can only be executed by one thread at a time. When a thread enters a synchronized block of code, it must acquire a lock on the object that the block is synchronized on. Other threads that try to enter the same synchronized block of code must wait until the lock is released by the first thread.

Here’s an example of how the synchronized keyword can be used in Java:

public class Example {
    private int count = 0;
    
    public synchronized void increment() {
        count++;
    }
    
    public synchronized int getCount() {
        return count;
    }
}

In this example, the increment and getCount methods are both synchronized, which means that only one thread can execute them at a time. When a thread enters the increment method, it acquires a lock on the Example object, and other threads must wait until the lock is released before they can execute the method.

Internally, the synchronized keyword in Java uses a monitor object to manage access to the synchronized block of code. When a thread enters a synchronized block, it must acquire the monitor object associated with the object that the block is synchronized on. The monitor object keeps track of which threads are waiting to enter the block and which thread currently has the lock.

When a thread releases the lock on a monitor object, it notifies any waiting threads that they can try to acquire the lock. The waiting threads then compete to acquire the lock, and the first thread to acquire the lock can enter the synchronized block of code.

Overall, the synchronized keyword is a powerful tool for managing concurrency in Java. It provides a simple and effective way to ensure that only one thread can access a shared resource at a time, which can prevent race conditions and other concurrency-related bugs.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Java Concurrency interview — then scores it.
📞 Practice Java Concurrency — free 15 min
📕 Buy this interview preparation book: 100 Java Concurrency questions & answers — PDF + EPUB for $5

All 100 Java Concurrency questions · All topics