CodeGym/Java 课程/模块 3/执行者:可执行对象

执行者:可执行对象

可用

6.1 可执行对象

所以我们得到了包裹的最大部分。它将描述用于运行异步任务并能够通过 Future 和 Callable 接口获取结果的接口,以及用于创建线程池的服务和工厂:ThreadPoolExecutor、ScheduledPoolExecutor、ForkJoinPool。

为了更好地理解,让我们对接口和类进行一些分解。

6.2 可执行对象的实现

Future<V>是获取异步操作结果的绝佳接口。这里的关键方法是 get 方法,它会阻塞当前线程(有或没有超时),直到另一个线程上的异步操作完成。还有其他方法可用于取消操作和检查当前状态。FutureTask 类通常用作实现。

RunnableFuture<V>- 如果 Future 是客户端 API 的接口,那么 RunnableFuture 接口已经用于启动异步部分。run() 方法的成功完成结束异步操作并允许通过 get 方法检索结果。

Callable<V>- 用于异步操作的 Runnable 接口的扩展模拟。允许您返回一个类型化的值并抛出一个已检查的异常。即使此接口没有 run() 方法,许多 java.util.concurrent 类也支持它和 Runnable。

FutureTask<V>— Future/RunnableFuture 接口的实现。异步操作以 Runnable 或 Callable 对象的形式作为构造函数之一的输入。FutureTask 类本身设计为在工作线程中启动,例如,通过 new Thread(task).start() 或通过 ThreadPoolExecutor。异步操作的结果通过 get(...) 方法检索。

Delayed- 用于应该在未来开始的异步任务,以及在 DelayQueue 中。允许您设置异步操作开始前的时间。

ScheduledFuture<V>- 结合了 Future 和 Delayed 接口的标记接口。

RunnableScheduledFuture<V>- 结合了 RunnableFuture 和 ScheduledFuture 的接口。此外,您可以指定该任务是一次性任务还是应以指定频率运行。

评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论