Given:
class Erupt implements Runnable {
public void run() {
System.out.print(Thread.currentThread().getName());
}
}
public class Yellowstone {
static Erupt e = Erupt();
Yellowstone() { new Thread(e, “const”).start(); } // line A
public static void main(String[] args) {
new Yellowstone();
new Faithful().go();
}
static class Faithful {
void go() { new Thread(e, “inner”).start(); } // line B
}
}
What is the result?
A.
Both const and inner will be in the output.
B.
Only const will be in the output.
C.
Compilation fails due to an error on line A.
D.
Compilation fails due to an error on line B.
E.
Anexceptionis thrown at runtime.
Explanation:
The code compiles fine.Note:The Runnable interface should be implemented by any class whose instances are intended to be executed by a thread. The class must define a method of no arguments called run.
This interface is designed to provide a common protocol for objects that wish to execute code while they are active. For example, Runnable is implemented by class Thread. Being active simply means that a thread has been started and has not yet been stopped.
In addition, Runnable provides the means for a class to be active while not subclassing Thread. A class that implements Runnable can run without subclassing Thread by instantiating a Thread instance and passing itself in as the target. In most cases, the Runnable interface should be used if you are only planning to override the run() method and no other Thread methods. This is important because classes should not be subclassed unless the programmer intends on modifying or enhancing the fundamental behavior of the class.
Note 2:start()
Causes this thread to begin execution; the Java Virtual Machine calls the run method of this thread.Reference:java.lang
Interface Runnable
A.
Both const and inner will be in the output.
+1
+1
If you add “new” before “Erupt();” the answer will be A