美文网首页
Executor框架

Executor框架

作者: 小P_500d | 来源:发表于2022-03-14 16:06 被阅读0次

    Executor框架的使用示意图

    Executor框架的使用示意图

     线程池主要包括三个部分:

    任务

    实现Runnable或者Callable的类

    执行

    ExecutorService,主要实现类:

    ThreadPoolExecutor

    由Executors可以创建4种:SingleThreadExecutor,CachedThreadPool,FixedThreadPool,ScheduledExecutorService其实就是对应的ThreadPoolExecutor的参数不一样。所以在实际使用中可以自己根据需要创建线程池

    1 SingleThreadExecutor核心数等于最大线程数,闲置时间设置为0.(适用于为了满足资源管理的需求,而需要限制当前线程数量的应用场 景,它适用于负载比较重的服务器,书上原话,不太明白)。如果有线程在执行某个任务过程中失败了,会创建新的线程继续执行

    SingleThreadExecutor

    2 SingleThreadExecutor 只有一个线程处理,闲置时间为0。适用于使用单线程处理的场景。如果这一个线程在执行某个任务过程中失败了,会创建新的线程继续执行

    SingleThreadExecutor

    3 CachedThreadPool 核心线程数为0,最大线程数为Integer最大值即2的31次方减1.闲置时间为60秒,使用的阻塞队列为SynchronousQueue。线程不够用了就新增一个线程处理任务,所以不需要队列存储任务而使用SynchronousQueue。适用于执行很多的短期异步任务的小程序,或者 是负载较轻的服务器。

    CachedThreadPool

    4 ScheduledThreadPoolExecutor  最大线程数为Integer最大值,无闲置,阻塞队列使用DelayedWorkQueue。因为这个队列有了定时的特性。

    ScheduledThreadPoolExecutor ScheduledThreadPoolExecutor

    定时器不使用Timer的原因:Timer一个任务执行过久会影响系统调度,对时间敏感,不能处理异常,不能获取返回结果,不能排序

    结果

    无结果或者Future,通常为FutureTask

    FutureTask实现了RunnableFuture,改类继承了Runnable和Callable,所以FutureTask可以作为任务传递。

    FutureTask实现和使用放另一篇文章,还需要补充相关知识,以下是调用get(),cancel()过程

    FutureTask执行get和cancel过程

    相关文章

      网友评论

          本文标题:Executor框架

          本文链接:https://www.haomeiwen.com/subject/luajdrtx.html