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.
An Exception is thrown at runtime.
Explanation:
The code compiles fine.
Note:The Runnable interface should be implemented by any class whose instances are intended
to beexecuted 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 areactive. For example, Runnable is implemented by class Thread. Being active simply
means that a thread hasbeen started and has not yet been stopped.
In addition, Runnable provides the means for a class to be active while not subclassing Thread.
Aclass that implements Runnable can run without subclassing Thread by instantiating a Thread
instance andpassing itself in as the target. In most cases, the Runnable interface should be used if
you are only planning tooverride the run() method and no other Thread methods. This is important
because classes should not besubclassed unless the programmer intends on modifying orenhancing 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
Answer should be “D” “”e cannot be resolved to a variable””
BKhateib is (sorry) wrong. e is in fact a variable of type Erupt, which is-a Runnable. Therefore it’s a valid argument to the Thread-constructor.
A
/**
*
* @author Humberto
*/
class Erupt implements Runnable {
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
public class Yellowstone {
static Erupt e = new 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
}
}
A