Design of thread pool reuse with Executors.newFixedThreadPool in Java
Answers:


It is better to reuse the ExecutorService.  Destroying threads and then recreating this is expensive.  (The only scenario where destroying and recreating a pool might be advisable is when the pool is going to be unused for a long time, and physical memory usage is a problem.  But even then, some flavors of executor are able of shrinking the thread pool size when there is no demand.)
Well yes, that would be a problem.  But that really means that you should not call shutdown on an executor if you still may need to submit new tasks in it.
You can't reuse an executor after calling shutdown on it.
There should be no memory leaks ... apart from the fact that the idle threads themselves are using memory (for thread stacks), and will continue to use it until the executor is shut down.  For a fixed sized / bounded sized pool, that memory usage by threads is bounded.  Most people would not call a bounded memory usage a "leak".

In fact, not reusing an executor is likely to lead to a (real) memory leaks= if you somehow neglect to call shutdown on the executor.