newCachedThreadPool(通常是首选)
创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步任务的程序而言,这些线程池通常可提高程序性能。调用 execute 将重用以前构造
的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有 60 秒钟未被使用的线程。因此,长时间保持空闲的线程池不会使用任何资源。
newFixedThreadPool
创建一个可重用固定线程数的线程池,一次性预先执行代价高昂的线程分配,限制线程的数量,这样可以节省时间,因为你不用为每个人物都固定的付出创建线程的开销
newSingleThreadExecutor
Executor.ThreadExecutor()返回一个线程池(这个线程池只有一个线程),这个线程池可以在线程死后(或发生异常时)重新启动一个线程来替代原来的线程继续执行下去!
Java 里面线程池的顶级接口是 Executor,但是严格意义上讲 Executor 并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是 ExecutorService。
有返回值线程池
实现Callable接口而不是Runnble接口,在java se5中引入的callable是一种具有参数的泛型,它的类型参数表示的是从方法call()中固定返回值,并且必须使用ExecutorService.submit()方法调用它
(详情见java编程思想658页)
原文:https://www.cnblogs.com/xiaoayu/p/12308521.html