Static Method Hiding and Synchronization
What potential concurrency issue arises from the static method log in StaticDerived?
class StaticBase {
public static synchronized void log(String msg) {
System.out.println("Base log: " + msg);
}
}
class StaticDerived extends StaticBase {
public static void log(String msg) {
// Hidden method without synchronization
System.out.println("Derived log: " + msg);
}
}
public class StaticOverrideTest extends Thread {
public void run() {
StaticDerived.log("Message");
}
public static void main(String[] args) {
Thread t1 = new StaticOverrideTest();
Thread t2 = new StaticOverrideTest();
t1.start();
t2.start();
}
}
A
There is no issue because static methods cannot be overridden.
B
A compile-time error will occur because synchronization cannot be removed in a subclass.
C
Deadlock is inevitable because static methods must always synchronize on the class object.
D
The static method in StaticDerived is not synchronized, risking race conditions when invoked concurrently.
Question Leaderboard
Not enough data yet to show leaderboard.
APFIVE