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唤醒等待的线程就能拿到执行结果了。


yinpursue
1 声望0 粉丝

« 上一篇
threadPoolExecutor
下一篇 »
mysql lock