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

Discussion

Sample11 is run - what will be the output?

public class Sample11
{
    public static void main(String[] args) throws InterruptedException
    {
        Thread t = new Thread(() ->
        {
            try
            {
                Thread.sleep(5000);
                System.out.println("finished");
            }
            catch (InterruptedException e)
            {
                System.out.println("interrupted");
            }
        });
        t.start();
        t.interrupt();
        t.join();
    }
}

  • A.Either message, depending on timing
  • B.interrupted, after about five seconds
  • C.interrupted
  • D.finished, after about five seconds

Answer: C

The worker spends essentially all its life inside sleep, and an interrupt delivered to a thread blocked there throws InterruptedException at once. So the catch block runs almost immediately and the program ends without waiting. The tiny race before sleep begins is closed by sleep noticing an already-set status.

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

Post your comment

Please log in or register to post a comment.