如何得到线程执行完之后返回的结果

来源:互联网 发布:中科院外籍院士知乎 编辑:程序博客网 时间:2024/05/17 03:52

在实际开发过程中,很多时候要将子线程执行完后返回的结果给到主线程里。具体怎么实现呢?这里给出3个实现方法!

1、根据反射原理实现
很多人都习惯在调用线程的时候,通过构造方法给线程传递参数,这里我们在构造方法里传两个参数,一个是类 callback,一个是方法名 method。这样我们在线程的run方法最后 执行callback.getMethod(method).invoke(null); 这样就可能执行你指定的某个类下的某个方法了!

2、Callable+ScheduledThreadPoolExecutor实现
这个是在Java1.5以后,添加了ScheduledThreadPoolExecutor和callable两个组件(接口),ScheduledThreadPoolExecutor大家可能比较熟悉,它的优点就不说了;它用来执行线程进行调度的时候,有一个方法.schedule(Callable<Object> callable, long delay, TimeUnit unit),注意:这里的参数是Callable而不是Runnable,大家千万不要被它唬住了,其实它和Runnable差不多,都能实现有个线程,只不过Callable可以添加返回值!这正是我们想要的!

所以我们在用ScheduledThreadPoolExecutor调度线程得到返回值 ScheduledFuture后执行get()方法,就可以得到返回值了。

 

3、第三种就是自定义接口,把接口当初参数传进线程里,然后在线程完成的地方调用接口的方法,这个方法也是最常用的

 

 

 

 

 

 

0 0
原创粉丝点击