并发问题总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 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();
    }

如果没有获取到结果,最终线程会挂起。

阅读更多

没有更多推荐了,返回首页