目录
- 1. 任务(Task)
- 2. 执行器(Executor)
- 3. 任务结果(Future)
- 4. 线程池(ThreadPool)
- 5. 任务队列(Work Queue)
- 6. 线程工厂(Thread Factory)
- 7. 拒绝策略(Rejection Policy)
1. 任务(Task)
- 1.在Executor框架中,任务通常是通过实现Runnable接口或Callable接口来定义的。
- 2.Runnable接口的run方法没有返回值,而Callable接口的call方法可以返回结果,并可能抛出异常。
2. 执行器(Executor)
- 1.Executor接口是Executor框架的基础,它只有一个方法execute(Runnable command),用于提交任务给执行器执行。
- 2.Executor接口的实现类负责具体的任务执行机制,包括线程的创建、调度和管理等。
3. 任务结果(Future)
- 1.Future接口表示异步计算的结果。当一个任务提交给执行器后,执行器会返回一个Future对象,通过该对象可以查询任务的状态、等待任务完成或获取任务的结果。
- 2.FutureTask类是RunnableFuture接口的实现,它实现了Runnable和Future接口,因此既可以作为任务提交给执行器,又可以作为获取任务结果的Future对象。
4. 线程池(ThreadPool)
- 1.线程池是Executor框架的一个关键组件,它管理着一组工作线程,并允许并发地执行任务。
- 2.ThreadPoolExecutor类是线程池的具体实现,它提供了线程池的核心功能,包括线程的创建、销毁、任务调度、线程复用等。
- 3.Executors类提供了一系列工厂方法,用于创建具有不同配置和特性的线程池实例。
5. 任务队列(Work Queue)
- 1.任务队列用于存储等待执行的任务。当任务提交给线程池时,如果线程池中的线程都在忙,则任务会被放入任务队列中等待执行。
- 2.Executor框架提供了多种类型的任务队列,如LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue等,它们具有不同的特性和行为。
6. 线程工厂(Thread Factory)
- 1.线程工厂用于创建新线程。ThreadFactory接口提供了一个newThread(Runnable r)方法,用于创建并返回一个新的线程实例。
- 2.通过自定义线程工厂,可以设置线程的优先级、是否为守护线程、线程的名称等属性。
7. 拒绝策略(Rejection Policy)
- 1.当线程池无法处理新提交的任务时(例如,线程池已满或已关闭),会执行拒绝策略。
- 2.Executor框架提供了几种内置的拒绝策略,如AbortPolicy(抛出异常)、CallerRunsPolicy(由调用线程执行)、DiscardPolicy(丢弃任务)和DiscardOldestPolicy(丢弃最旧的任务)。
- 3.也可以自定义拒绝策略,以满足特定的需求。