java中线程池的类型

时间:2013-06-19 08:17:44

标签: java multithreading threadpool

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

5 个答案:

答案 0 :(得分:25)

java中有各种线程池:

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

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

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

  • 预定线程池:用于安排未来任务的线程池。方法:Executors.newScheduledThreadPool()

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

答案 1 :(得分:4)

有很多种类型;)

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

自Java 7起,您还拥有ForkJoinPool

另请查看FutureTask,因为这是构建单个线程非常方便的类。

答案 2 :(得分:3)

看看Executors

解释了每个常见的ExecutorService,你可能会找到一个符合你需要的。{/ p>

答案 3 :(得分:3)

您可以在此处阅读有关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

答案 4 :(得分:3)

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

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