Machine-translated by Google. Questions are authored in English.
Top

Discussion

Sample05 is run - what will be the output?

public class Sample05
{
    public static void main(String[] args)
    {
        Object lock = new Object();
        synchronized (lock)
        {
            System.out.println("in");
        }
        lock.notify();
    }
}

  • A.in, then an IllegalMonitorStateException
  • B.in only, with no exception
  • C.An IllegalMonitorStateException before any output
  • D.in, then the program blocks for ever

Answer: A

The synchronized block prints and then releases the monitor, so by the time notify() is reached the thread no longer owns it. notify requires ownership just as wait does, so it throws IllegalMonitorStateException. Moving the call inside the block would make it legal.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.