通常来说,Executor 的实现可以是单线程与线程池两个版本,两种实现间各有优劣,单线程少了数据的竞争,但是吞吐量却容易达到瓶颈,线程池的实现可以提高吞吐量,但是却要处理数据的竞争冲突。

线程池 Executor

整个 Executor 是一个线程池,每个线程都在不断的寻找可执行的 task,然后执行,然后再找下一个task,再执行,永远重复。

单线程 Executor