Future是在多线程系统中应用最多的一个功能, 在异步获取线程处理结果时, 提供了可取消, 可打断, 可超时, 可等待等诸多处理方式.
以如下代码示例,看下JDK是如何实现这些特性的....任务可取消, 可设置超时时间等待结果, 判断任务是否取消, 判断任务是否完成等操作.
public interface Future {
// 取消任务
boolean cancel(boolean...FutureTask主要变量
1. state
记录Callable运行状态.
流程中isCancelled(), isDone()等判断状态的方法都是根据state处理的....FutureTask执行流程
在一个异步处理流程中, Callable会被封装成FutureTask, 并最后由线程池分配线程执行, 这里先不考虑线程池是如何分配线程的...., 包括get()等待结果, 超时, cancel()取消等操作;
下面分别讲解这两个线程的处理流程
1. run()处理流程
在run()方法执行逻辑中, 会首先回调Callable.call()方法