Future对象

Future对象

作用:

接收异步线程返回的结果

场景:

任务A和任务B,如果任务A需要任务B的返回结果,两种实现:

    1:AB在一个线程中,A等待B返回结果,如果B的处理时间长,A不能做其他事情

    2:A,B在不同线程中,A可以阻塞等B的结果,也可以先做其他工作,一段时间以后询问B

开启线程B:

ExecutorService threadPool = Executors.newCachedThreadPool();//项目中用的ThreadPoolExecutor

Future<Integer> future = threadPool.submit(new Callable<Integer>() {  //调用submit方法,传入一个callable对象,重写call方法

            public Integer call() throws Exception {  

            ......

            }  

        });

使用future.get方法获取返回值

不带参数的get方法是阻塞方法,只要线程为返回结果就会一直阻塞直到有结果为止。

可以使用isDone方法判断线程是否结束。也可以使用带参数的get方法,若指定时间内还没有得到线程返回值,会抛出TimeoutException的异常。

引自:https://www.cnblogs.com/4everlove/p/4277270.html

猜你喜欢

转载自blog.csdn.net/weixin_42192477/article/details/82588650