java线程池[转]

Posted 博客首页

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java线程池[转]相关的知识,希望对你有一定的参考价值。

Executor是一个顶层接口,在它里面只声明了一个方法execute(Runnable),返回值为void,参数为Runnable类型,

从字面意思可以理解,就是用来执行传进去的任务的;

然后ExecutorService接口继承了Executor接口,并声明了一些方法:submit、invokeAll、invokeAny以及shutDown等;

抽象类AbstractExecutorService实现了ExecutorService接口,基本实现了ExecutorService中声明的所有方法;

然后ThreadPoolExecutor继承了类AbstractExecutorService。

 

 

Executors这个工具类中提供了如下静态方法:

  • Executors.newCachedThreadPool() 无限大小的线程池,线程会自动重用
  • Executors.newFixedThreadPool(int) 固定线程数的线程池
  • Executors.newSingleThreadExecutor() 单线程执行器

 

 

按照Executors类中的几个工厂方法,分别使用的是:

  • LinkedBlockingQueue。FixedThreadPool和SingleThreadExecutor使用的是这个BlockingQueue,队列长度是无界的,适合用于提交任务相互独立无依赖的场景。
  • SynchronousQueue。  CachedThreadPool使用的是这个BlockingQueue,通常要求线程池不设定最大的线程数,以保证提交的任务有机会执行而不被丢掉。通常这个适合任务间有依赖的场景。

当然,开发者也可以定制ThreadPoolExecutor时使用ArrayBlockingQueue有界队列

 

以上是关于java线程池[转]的主要内容,如果未能解决你的问题,请参考以下文章

(转)java并发之Executor

如何优雅的使用和理解线程池----转

Java Executor源码解析—Executors线程池工厂以及四大内置线程池

Java Executor线程池框架的概述

Java线程池 Executor框架概述

Java 并发Executor框架机制与线程池配置使用