【问题标题】:Types of Thread Pools in java [closed]java中的线程池类型[关闭]
【发布时间】:2013-06-15 16:34:18
【问题描述】:

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

【问题讨论】:

标签: java multithreading threadpool


【解决方案1】:

java中有各种线程池:

  • 单线程执行器:只有一个线程的线程池。所以所有提交的任务都会按顺序执行。方法:Executors.newSingleThreadExecutor()

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

  • 固定线程池:具有固定线程数的线程池。如果一个线程不可用于该任务,则该任务被放入队列中等待另一个任务结束。方法:Executors.newFixedThreadPool()

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

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

【讨论】:

    【解决方案2】:

    有很多类型;)

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

    从 Java 7 开始,您还拥有 ForkJoinPool

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        看看Executors

        解释了每个常见的ExecutorService,您可能会在其中找到适合您需求的一个。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 2010-11-29
            • 1970-01-01
            • 2011-04-28
            • 1970-01-01
            • 1970-01-01
            • 2014-07-08
            • 2022-01-18
            • 2014-03-10
            • 1970-01-01
            相关资源
            最近更新 更多