Java中的线程池类型

19

在Java中有哪些类型的线程池。我需要实现一个使用大量计算的强大多线程应用程序,我应该使用哪种线程池?


4
请查看Executors中线程池类型的方法。你可能还会对ForkJoinPool感兴趣。 - Raphaël
5个回答

41

Java中有各种不同的线程池:

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

  • Cached Thread Pool:创建尽可能多的线程来并行执行任务的线程池。旧的可用线程将被重用于新任务。如果线程在60秒内未被使用,则会终止并从池中删除。方法:Executors.newCachedThreadPool()

  • Fixed Thread Pool:具有固定数量线程的线程池。如果没有线程可用于任务,则将任务放入队列中等待其他任务完成。方法:Executors.newFixedThreadPool()

  • Scheduled Thread Pool:旨在安排未来任务的线程池。方法:Executors.newScheduledThreadPool()

  • Single Thread Scheduled Pool:仅有一个线程用于安排未来任务的线程池。方法:Executors.newSingleThreadScheduledExecutor()


4

有许多类型 ;)

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

自 Java 7 以来,还有 ForkJoinPool

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


4

3

请查看 Executors

其中每个常见的ExecutorService都有详细解释,你可能会在其中找到适合你需求的服务。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接