Question 39:
Given the code fragments: class Caller implements Callable<String>{ 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 (new Caller ("Call")); Future f2 = es.submit (new Runner ("Run")); String str1 = (String) f1.get(); String str2 = (String) f2.get();//line n1 System.out.println(str1+ ":" + str2); } What is the result?
Answer options:
A. The program prints: Run Runner Call Caller : null And the program does not terminate. B. The program terminates after printing: Run Runner Call Caller : Run C. A compilation error occurs at line n1. D. An Execution is thrown at run time.