1。线程执行完后future如何获取执行结果呢?FutureTask是一个Runnable,而FutureTask接受一个Callable。当使用FutureTask作为Thread的目标时,执行一个线程调用(start),在start()之后,最终会调用FutureTask的run方法,run方法会调用Callable的call方法。call方法执行后,结果会放入FutureTask的returnObject中。调用FutureTask时,执行后如何获取结果?这是一个简单的生产者-消费者问题。get的时候判断returnObject是否为null。如果为空,等待()。当上面的call方法执行完,结果放入returnObject后,调用notify唤醒等待线程,获取到执行结果的时间。
