1.FutureTask原理
public class FutureTask<V> implements RunnableFuture<V>
public interface RunnableFuture<V> extends Runnable, Future<V> {
可以看到继承类
内部是通过一个AQS对象控制的
private final Sync sync;
类似一个同步阻塞队列。
public V get() throws InterruptedException, ExecutionException {
return sync.innerGet();
}
在FutureTask上调用get方法。
private final boolean parkAndCheckInterrupt() {
LockSupport.park(this);
return Thread.interrupted();
}
如果没有获取到结果,最终线程会挂起。
本文深入解析了FutureTask的实现机制,介绍了其如何通过继承自AQS(AbstractQueuedSynchronizer)来控制并发任务的执行流程。文章详细阐述了FutureTask的get方法是如何通过内部的Sync对象来获取任务结果,并在必要时使线程进入等待状态。
1748

被折叠的 条评论
为什么被折叠?



