Given the code fragments: class Caller implements Callable { String str; public Caller (String s) {this.str=s;} public String call()throws Exception { return str.concat (“Caller”);} } class Runner implements Runnable { String str; public Runner (String s) {this.str=s;} public void run () { System.out.println (str.concat (“Runner”));} } and public static void main (String[] args) InterruptedException, ExecutionException { ExecutorService es = Executors.newFixedThreadPool(2); Future f1 = es.submit (ne
A. The program prints: Run RunnerCall Caller : nullAnd the program does not terminate
B. The program terminates after printing: Run RunnerCall Caller : Run
C. A compilation error occurs at line n1
D. An Execution is thrown at run time