版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YAOQINGGG/article/details/79971204
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();
}
如果没有获取到结果,最终线程会挂起。