java中的线程池有哪些类型。我需要实现一个使用大量计算的强大的多线程应用程序,我应该使用哪个线程池?
5 回答
java中有各种线程池:
单线程执行器:只有一个线程的线程池。所以所有提交的任务都会按顺序执行。方法 :
Executors.newSingleThreadExecutor()
缓存线程池:创建并行执行任务所需的线程数的线程池。旧的可用线程将被重新用于新任务。如果一个线程在 60 秒内没有使用,它将被终止并从池中删除。方法 :
Executors.newCachedThreadPool()
固定线程池:具有固定数量线程的线程池。如果一个线程不可用于该任务,则该任务被放入队列中等待另一个任务结束。方法 :
Executors.newFixedThreadPool()
调度线程池:用于调度未来任务的线程池。方法 :
Executors.newScheduledThreadPool()
单线程调度池:只有一个线程来调度未来任务的线程池。方法 :
Executors.newSingleThreadScheduledExecutor()
这显示了不同并发结构的良好动画,可能会帮助您选择
有很多类型;)
例如,有ExecutorService
。这是允许提交任务等的“基本”实现。您可能希望使用它Executors
来获取新的实现,因为它具有适用于最常见场景的静态工厂方法。
从 Java 7 开始,您还拥有ForkJoinPool
.
也看看FutureTask
,因为这是一个非常方便的类来构建单个线程。
您可以在此处阅读有关 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
看看Executors。
每个常见ExecutorService
的都进行了解释,您可能会在其中找到适合您需求的一个。