Java线程(七):Callable和Future

本文详细介绍了如何在Java中利用FutureTask结合Callable进行异步计算,以及通过ExecutorService的submit方法执行Callable并获取Future。这种方式允许主线程在等待结果时执行其他任务,提高了程序的效率。同时,文章提到了面试前应准备的Android开发相关知识点与复习资源,包括核心模块、面试宝典和源码解析等资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. }

  2. };

  3. FutureTask future = new FutureTask(callable);

  4. new Thread(future).start();

  5. try {

  6. Thread.sleep(5000);// 可能做一些事情

  7. System.out.println(future.get());

  8. } catch (InterruptedException e) {

  9. e.printStackTrace();

  10. } catch (ExecutionException e) {

  11. e.printStackTrace();

  12. }

  13. }

  14. }

FutureTask实现了两个接口,Runnable和Future,所以它既可以作为Runnable被线程执行,又可以作为Future得到Callable的返回值,那么这个组合的使用有什么好处呢?假设有一个很耗时的返回值需要计算,并且这个返回值不是立刻需要的话,那么就可以使用这个组合,用另一个线程去计算返回值,而当前线程在使用这个返回值之前可以做其它的操作,等到需要这个返回值时,再通过Future得到,岂不美哉!这里有一个Future模式的介绍: [](()[http://openhome.cc/Gossip/DesignPattern/FuturePattern.htm](() 。

下面来看另一种方式使用Callable和Future,通过ExecutorService的submit方法执行Callable,并返回Future,代码如下:

[java]  [view plain](() [copy](() [print](() [?](() [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kzNciWVe-1650015931513)(https://code.youkuaiyun.com/assets/CODE_ico.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lA9aVQe8-1650015931513)(ht 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源 tps://code.youkuaiyun.com/assets/ico_fork.svg)]

  1. public class CallableAndFuture {

  2. public static void main(String[] args) {

  3. ExecutorService threadPool = Executors.newSingleThreadExecutor();

  4. Future future = threadPool.submit(new Callable() {

  5. Android开源项目《ali1024.coding.net/public/P7/Android/git》             public Integer call() throws Exception {

  6. return new Random().nextInt(100);

  7. }

  8. });

  9. try {

  10. Thread.sleep(5000);// 可能做一些事情

  11. System.out.println(future.get());

  12. } catch (InterruptedException e) {

  13. e.printStackTrace();

  14. } catch (ExecutionException e) {

  15. e.printStackTrace();

  16. }

  17. }

  18. }

最后,面试前该准备哪些资源复习?

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《960全网最全Android开发笔记》

面试字节两轮后被完虐,字节面试官给你的技术面试指南,请查收

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
id,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值