执行器的高级特性

执行器是一个类,它允许编程人员执行并发任务而无须担心线程的创建和管理。

执行器框架具有以下基本特征。

任务的撤销

将任务发送给执行器之后,还可以撤销该任务的执行。

使用 submit() 方法将 Runnable 对象发送给执行器时,它会返回 Future 接口的一个实现。

该类允许你控制该任务的执行。该类有 cancel()方法,可用于撤销任务的执行。
该方法接收一个布尔值作为参数,如果接收到的参数为 true ,那么执行器执行该任务,否则执行该任务的线程会被中断。

以下便是想要撤销的任务无法被撤销的情形。

cancel() 方法返回了一个布尔值,用于表明当前任务是否被撤销。

任务执行调度

ThreadPoolExecutor 类是 Executor 接口和 ExecutorService 接口的基本实现。
但是 Java并发 API为该类提供了一个扩展类,以支持预定任务的执行,这就是 ScheduledThreadPoolExeuctor 类。

可以进行如下操作。

重载执行器方法

执行器框架是一种非常灵活的机制。
可以通过扩展一个已有的类( ThreadPoolExecutor 或者 ScheduledThreadPoolExecutor )实现自己的执行器,获得想要的行为。

如果重载了 ThreadPoolExecutor 类,就可以重载以下方法。

如果扩展 ScheduledThreadPoolExecutor 类,你可以重载 decorateTask() 方法。
该方法与面向预定任务的 newTaskFor() 方法类似并且允许重载执行器所执行的任务。

更改一些初始化参数

可以在执行器创建之时更改一些参数以改变其行为。

最常用的一些参数如下所示。