1、future是如何做到在线程执行完之后拿到执行结果的?
FutureTask是一个Runnable,FutureTask接受一个Callable,当把FutureTask当作Thread的target,去执行一个线程调用(start),start()之后最终会调用FutureTask的run方法,run方法又会调用Callable的call方法,call方法执行完,会把结果放入到一个FutureTask的一个returnObject中。
调用FutureTask时是怎么做到执行完才拿到这个结果呢?很简单生产者消费者问题,get的时候判断这个returnObject是否为null,如果为null则wait(),当上面的call方法执行完并把结果放入returnObject后,调用notify唤醒等待的线程就能拿到执行结果了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。