Given:
void waitForSignal() {
Object obj = new Object();
synchronized (Thread.currentThread()) {
obj.wait();
obj.notify();
}
}
Which statement is true?
A. This code can throw an InterruptedException.
B. This code can throw an IllegalMonitorStateException.
C. This code can throw a TimeoutException after ten minutes.
D. Reversing the order of obj.wait() and obj.notify() might cause this method to complete normally.
E. A call to notify() or notifyAll() from another thread might cause this method to complete
normally.
F. This code does NOT compile unless "obj.wait()" is replaced with "((Thread)
obj).wait()".
Execution:
wait() It will throw InterruptedException if not handled
but the snippet is acquiring lock on current thread and invoking wait for object i.e ob. This lead to Illegal Monitor of State. So Answer will be IllegalMonitoryStateException
Result:
B. This code can throw an IllegalMonitorStateException.
void waitForSignal() {
Object obj = new Object();
synchronized (Thread.currentThread()) {
obj.wait();
obj.notify();
}
}
Which statement is true?
A. This code can throw an InterruptedException.
B. This code can throw an IllegalMonitorStateException.
C. This code can throw a TimeoutException after ten minutes.
D. Reversing the order of obj.wait() and obj.notify() might cause this method to complete normally.
E. A call to notify() or notifyAll() from another thread might cause this method to complete
normally.
F. This code does NOT compile unless "obj.wait()" is replaced with "((Thread)
obj).wait()".
Execution:
wait() It will throw InterruptedException if not handled
but the snippet is acquiring lock on current thread and invoking wait for object i.e ob. This lead to Illegal Monitor of State. So Answer will be IllegalMonitoryStateException
Result:
B. This code can throw an IllegalMonitorStateException.
No comments:
Post a Comment