下面来看看核心的awaitDone方法。此方法会阻塞线程获取结果的线程,其实调用Future去执行任务是使用两个线程,一个线程专门去执行线程的任务。另一个线程用来“招呼”用户。如果有结果了,则工作线程会唤醒正在被get阻塞的线程。有结果分为三种:
- 取消情况下唤醒阻塞的线程
-
正常情况下唤醒阻塞的线程
-
异常情况下唤醒阻塞的线程
awaitDone方法会对采用自旋的形式检查状态并将请求的用户线程挂起以避免消耗:
下面来看看核心的awaitDone方法。此方法会阻塞线程获取结果的线程,其实调用Future去执行任务是使用两个线程,一个线程专门去执行线程的任务。另一个线程用来“招呼”用户。如果有结果了,则工作线程会唤醒正在被get阻塞的线程。有结果分为三种:
正常情况下唤醒阻塞的线程
异常情况下唤醒阻塞的线程
awaitDone方法会对采用自旋的形式检查状态并将请求的用户线程挂起以避免消耗: