Java的Executor框架简介
在Java中使用线程来执行异步任务。线程的创建和销毁都有资源的开销,为了解决这些问题,出现了线程池技术。Executor框架实现的就是线程池的功能。
Executor框架简介
在HotSpot虚拟机的线程模型中,Java的线程会映射到操作系统的线程。
多线程的程序是分为很多任务,把这些任务交给Executor框架调度执行,操作系统把相应的线程映射到处理器中执行。示意图如下:
调度模型
Executor框架中有很多接口和核心类
Runnable 或者Callable接口的实现类就是我们需要建立的任务,把这些任务提交给Executor或ExecutorService执行,最后返回Future。
接口和实现类
其中Executor接口,只有一个执行任务的方法。
ExecutorService继承与Executor,增加了提交任务的方法和管理线程池的方法。
ThreadPoolExecutor核心类,创建线程并执行任务。
Future就是异步执行的结果,是submit方法返回,通过futrue.get()获取计算结果。
Callable和Runnable接口,这两个接口的不同之处就是Callable可以返回结果,Runnable则不可。如果有submit提交一个Runnable,后台会用Executors.callable(runnable, result)转成Callable。