B says that when the destroy method is called, no thread is executing the service method. So you can think of it as service method is not serving any client request. This is true for destroy method which is always called after the last request is processed.
C is not true as the service method might start a thread which might not have completed when the destroy method is called. Take this code
Now when the service method is called, it will start a new thread and itself will end. Now when the container will call destroy method, it will not check whether the run method in MyThread class is complete or not. The destroy method might be called even when the run method in MyThread is still running...
On a side note, Servlets really shouldn't need to create their own threads, and it's a good idea to avoid it. Containers provide features of their own with inherent thread protection, and usually these are sufficient. Starting your own threads could lead to trouble.
Charles Lyons (SCJP 1.4, April 2003; SCJP 5, Dec 2006; SCWCD 1.4b, April 2004)
Author of OCEJWCD Study Companion for Oracle Exam 1Z0-899 (ISBN 0955160340 / AmazonAmazon UK )
We don't have time to be charming! Quick, read this tiny ad:
Devious Experiments for a Truly Passive Greenhouse!