General Questions

Question 11 :

Which method registers a thread in a thread scheduler?

A). run();
B). construct();
C). start();
D). register();
Answer : Option C

Explanation :

Option C is correct. The start() method causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.

Option A is wrong. The run() method of a thread is like the main() method to an application. Starting the thread causes the object's run method to be called in that separately executing thread.

Option B is wrong. There is no construct() method in the Thread class.

Option D is wrong. There is no register() method in the Thread class.

Question 12 :

Assume the following method is properly synchronized and called from a thread A on an object B:
After calling this method, when will the thread A become a candidate to get another turn at the CPU?

A). After thread A is notified, or after two seconds.
B). After the lock on B is released, or after two seconds.
C). Two seconds after thread A is notified.
D). Two seconds after lock B is released.
Answer : Option A

Explanation :

Option A. Either of the two events (notification or wait time expiration) will make the thread become a candidate for running again.
Option B is incorrect because a waiting thread will not return to runnable when the lock is released, unless a notification occurs.
Option C is incorrect because the thread will become a candidate immediately after notification, not two seconds afterwards.
Option D is also incorrect because a thread will not come out of a waiting pool just because a lock has been released.

Question 13 :

Which of the following will not directly cause a thread to stop?

A). notify()
B). wait()
C). InputStream access
D). sleep()
Answer : Option A

Explanation :

Option A is correct. notify() - wakes up a single thread that is waiting on this object's monitor.

Option B is wrong. wait() causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object.

Option C is wrong. Methods of the InputStream class block until input data is available, the end of the stream is detected, or an exception is thrown. Blocking means that a thread may stop until certain conditions are met.

Option D is wrong. sleep() - Causes the currently executing thread to sleep (temporarily cease execution) for a specified number of milliseconds. The thread does not lose ownership of any monitors.

Question 14 :

Which class or interface defines the wait(), notify(),and notifyAll() methods?

A). Object
B). Thread
C). Runnable
D). Class
Answer : Option A

Explanation :

The Object class defines these thread-specific methods.

Option B, C, and D are incorrect because they do not define these methods. And yes, the Java API does define a class called Class, though you do not need to know it for the exam.

Question 15 :

public class MyRunnable implements Runnable 
    public void run() 
        // some code here
which of these will create and start this thread?

A). new Runnable(MyRunnable).start();
B). new Thread(MyRunnable).run();
C). new Thread(new MyRunnable()).start();
D). new MyRunnable().start();
Answer : Option C

Explanation :

Because the class implements Runnable, an instance of it has to be passed to the Thread constructor, and then the instance of the Thread has to be started.

A is incorrect. There is no constructor like this for Runnable because Runnable is an interface, and it is illegal to pass a class or interface name to any constructor.

B is incorrect for the same reason; you can't pass a class or interface name to any constructor.

D is incorrect because MyRunnable doesn't have a start() method, and the only start() method that can start a thread of execution is the start() in the Thread class.