Java Thread Safety and Synchronized Methods
Considering the above program, what can be said about its thread safety?
public class SyncCounter {
private int count = 0;
public synchronized void increment() { count++; }
public int getCount() { return count; }
}
public class Worker extends Thread {
private SyncCounter counter;
public Worker(SyncCounter counter) { this.counter = counter; }
public void run() {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
SyncCounter c = new SyncCounter();
Thread t1 = new Worker(c);
Thread t2 = new Worker(c);
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("Count is: " + c.getCount());
}
}
A
A race condition exists because the getCount() method is unsynchronized.
B
Deadlock is possible due to nested synchronized calls.
C
The program safely synchronizes counter increments, preventing race conditions.
D
The counter variable could be updated inconsistently because it isn’t declared as volatile.
Question Leaderboard
Not enough data yet to show leaderboard.
APFIVE