Future和Callable在Java并发编程中扮演着重要的角色。它们的作用如下:
- Callable:这是一个接口,它代表一段可以调用并返回结果的代码。Callable接口的主要优点是它可以返回运行结果,并能抛出异常。这在处理并行计算时非常有用,因为它可以让我们更容易地获取并行任务的结果。
- Future:这也是一个接口,它表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。Future接口的主要作用是用于获取Callable任务的结果。当你提交一个Callable任务给一个线程池后,线程池会返回一个Future对象,通过这个Future对象,你可以知道Callable任务的状态,可以取消任务的执行,也可以获取任务执行的结果。
总的来说,Callable和Future通常一起使用,它们使得我们可以更容易地处理并行计算并获取计算结果。
1.FutureTask实现了Runnable和Future接口,它是带有状态和结果的任务,所有的操作都是围绕着任务状态展开的;
2.如果任务状态不为NEW,表明任务已经完成或已经终止;
3.任务状态的切换过程大概如下四种,如下图所示:
4.callable的启动方式主要有两种,一种是利用FutureTask的构造方法,将callable作为参数传入;另一种调用submit方法提交到
线程池中;
5.底层还是使用了CAS完成一系列加锁和状态更改操作。