文章目录
  1. 第十章、Executor
    1. 10.1 Executor框架与成员
      1. 1、ThreadPoolExecutor
      2. 2、ScheduledThreadPoolExecutor
      3. 3、Future接口
      4. 4、Runnable与Callable

第十章、Executor

10.1 Executor框架与成员

1、ThreadPoolExecutor

  • FixedThreadPool:适用于满足资源管理的需求,而需要限制当前线程数量的应用场景,适合负载较重的服务器
  • SingleThreadExecutor:任何时间不会有多个线程活动,顺序执行每个任务
  • CachedThreadPool:Queue是SynchronousQueue(传递,每个插入必须等待一个移除),线程池最大为INT_MAX,大小无界,如果其没有空闲线程取Queue中的那个任务,新的线程会被创建,如果提交速度快于执行速度,资源迅速耗尽,适用于很多短期异步任务小程序或负载较轻的服务器

2、ScheduledThreadPoolExecutor

  • ScheduledThreadPoolExecutor:需要多个后台线程执行周期任务,同时需要限制后台线程的数量
  • SingleThreadScheduledExecutor:单个后台线程执行周期任务,保证顺序的执行各个任务
  • Queue使用DelayQueue实现,线程的take任务方法中如果取不到则进入Condition等待,如果取到没有到期的任务则进行Condition等待相应时间,如果取到则唤醒所有等待的线程并且返回取到的任务
  • Queue的add方法中,如果添加的是Queue中的头元素,则唤醒所有等待的线程(一种原队列为空,一种所添加的元素为最先需要执行的任务,所以要唤醒所有线程取自己去执行)

    3、Future接口

  • 表示异步计算的结果

    4、Runnable与Callable

  • Callable可由Runnable包装:java.util.concurrent.Executors#callable(java.lang.Runnable, T)
文章目录
  1. 第十章、Executor
    1. 10.1 Executor框架与成员
      1. 1、ThreadPoolExecutor
      2. 2、ScheduledThreadPoolExecutor
      3. 3、Future接口
      4. 4、Runnable与Callable