The only way to get a [`Future`](https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html), from what I understand, is to use an `ExecutorService`, which is obtained for instance via `Executors.newFixedThreadPool(10)` (btw, how do you how many threads to use? is there some thumb rule?).

So what I don't understand, is whether am I supposed to use:

```
ExecutorService executorService = Executors.newFixedThreadPool(n);

```

And then save it (e.g. in some top level `IoC`) and call the `executorService` whenever I need new `Future`?

Isn't there like a default Java's built-in `ExecutorService` I can used, thus avoiding the nag of `ExecutorService` initialization and maintenance?