在Java中有哪些类型的线程池。我需要实现一个使用大量计算的强大多线程应用程序,我应该使用哪种线程池?
在Java中有哪些类型的线程池。我需要实现一个使用大量计算的强大多线程应用程序,我应该使用哪种线程池?
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()
有许多类型 ;)
例如,有 ExecutorService
。这是“基本”实现,允许提交任务等。您可能希望使用 Executors
来获取新的实例,因为它具有最常见场景的静态工厂方法。
自 Java 7 以来,还有 ForkJoinPool
。
还要看看 FutureTask
,因为这是一个非常方便的类来构建单个线程。