java中线程池的类型

java中的线程池有哪些类型。 我需要实现一个使用繁重计算的健壮的multithreading应用程序,我应该使用哪个线程池?

java中有各种线程池:

  • 单线程执行程序:只有一个线程的线程池。 因此,所有提交的任务将按顺序执行。 方法: Executors.newSingleThreadExecutor()

  • 缓存线程池:一个线程池,它创建所需的线程,以并行执行任务。 旧的可用线程将重新用于新任务。 如果在60秒内未使用某个线程,它将被终止并从池中删除。 方法: Executors.newCachedThreadPool()

  • 固定线程池:具有固定线程数的线程池。 如果某个线程不可用于该任务,则该任务将进入队列,等待其他任务结束。 方法: Executors.newFixedThreadPool()

  • 计划的线程池:用于计划未来任务的线程池。 方法: Executors.newScheduledThreadPool()

  • 单线程预定池:只有一个线程来调度未来任务的线程池。 方法: Executors.newSingleThreadScheduledExecutor()

有很多种类;)

例如,有ExecutorService 。 这是允许提交任务等的“基本”实现。您可能希望使用Executors获取新的任务,因为它具有最常见方案的静态工厂方法。

从Java 7开始,你也有了ForkJoinPool

还可以看看FutureTask ,因为这是一个非常方便的类来构建单个线程。

看看执行官 。

解释了每个常见的ExecutorService ,您可能会找到符合您需求的ExecutorService

您可以在此处阅读有关ThreadPoolExecutors的更多信息: http : //docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html

但是,查看ForkJoinTask API可能是个好主意: http : //docs.oracle.com/javase/7/docs/api/java/util/concurrent/ForkJoinTask.html

这显示了不同并发结构的良好动画,这可能会帮助您选择

http://sourceforge.net/projects/javaconcurrenta/