关于java:Future

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理