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