Threads - Programming

Q1:

class Test 
{
    public static void main(String [] args) 
    {
        printAll(args);
    }

    public static void printAll(String[] lines) 
    {
        for(int i = 0; i < lines.length; i++)
        {
            System.out.println(lines[i]);
            Thread.currentThread().sleep(1000);
        }
    }
}
the static method Thread.currentThread() returns a reference to the currently executing Thread object. What is the result of this code?

A Each String in the array lines will output, with a 1-second pause.

B Each String in the array lines will output, with no pause in between because this method is not executed in a Thread.

C
Each String in the array lines will output, with no pause in between because this method is not executed in a Thread.

D This code will not compile.

ANS:A - Each String in the array lines will output, with a 1-second pause.

D. The sleep() method must be enclosed in a try/catch block, or the method printAll() must declare it throws the InterruptedException. A is incorrect, but it would be correct if the InterruptedException was dealt with. B is incorrect, but it would still be incorrect if the InterruptedException was dealt with because all Java code, including the main() method, runs in threads. C is incorrect. The sleep() method is static, so even if it is called on an instance, it still always affects the currently executing thread.