Sorry - another one! In the explanation for Question 22, it says:
"If the submit() method had been used instead of execute(), then C would have been the correct answer, as the output of submit( Runnable) task is a Future <? > object which can only return null on its get() method.
Its true that the output of submit(Runnable) task would be null... but in the actual code in the question being referred to, if changing from execute() to submit() method, it would be a submit(Callable):
IntStream.iterate( 0, i -> i 1). limit( 5). forEach( i -> results.add( service.submit(() -> counter )) // n1
I apologise again for the pedantry but, in some cases, I am learning these rules for the first time and want to make sure my own understanding is correct as much as anything.