I think your main concern is why executor framework is better then using thread.Below para form Thinking in java book gives perfect explanation for this
Java SE5 java.util.concurrent Executors simplify concurrent programming by managing Thread objects for you. Executors provide a layer of indirection between a client and the execution of a task; instead of a client executing a task directly, an intermediate object executes the task. Executors allow you to manage the execution of asynchronous tasks without having to explicitly manage the lifecycle of threads. Executors are the preferred method for starting tasks in Java SE5/6
We don't kill thread as kill() method is deprecated and will not be available in JDK 8. To stop processing we send interrupt to thread. in Thread approach Using thread.interrupt() and in executor framework using shutdownnow() And then we handle interrupt in run() method to come out of it.
Also I am not aware of any case when thread is preferred approach. Let's see if someone posts any example when we prefer thread over executor.