版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38331606/article/details/84816734
- 介绍下Executor架构
Execuotr是一个基于生产-消费者模型的异步处理架构。可实现线程的提交,与线程的执行过程的解耦。主要包括三个方向:
-
- 任务架构:
以Runnable,Callable接口实现的任务对象;其中Callable接口实现的任务对象,可获取其执行结果,同时可抛出异常由调用端进行处理。
-
- 任务提交执行架构:
基于生产者消费者模型实现的以Executor,ExecutorService为核心的线程池架构。其中线程池ThreadPoolExecutor的实现类,通常通过工厂类Executors进行创建线程池pool。线程池可通过submit()提交Runnable以及Callable任务,并得到一个Future对象。可通过execute()提交Runnable任务。其中常见的线程池有如下四种方式。其中线程池可通过ShutDown()方式关闭
用于负载较重的服务器 |
固定大小的线程池FixedThreadPool |
用于不会有太多线程活动 |
单线程的线程池SingleThreadPool |
用于负载较轻,或者执行很多短期的异步任务 |
根据需要变化的线程池CachedThreadPool |
用于定时调度任务 |
定时调度线程池ScheduledThreadPool, |
-
- 异步任务执行结果架构:
以Future接口以及其实现类FutureTask为核心的异步执行结果架构,用于获取异步的执行结果。
其中,FutureTask实现了Runnable以及Future接口,同时存在FutureTask(Callable<V> callable),以及FutureTask(Runnable runnable, V result)两种构造方法。可通过get()方法获取Callable的异步执行结果。