温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中Future的使用方法

发布时间:2021-07-13 09:21:26 来源:亿速云 阅读:160 作者:chen 栏目:大数据

这篇文章主要介绍“Java中Future的使用方法”,在日常操作中,相信很多人在Java中Future的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Future的使用方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在开发多线程时,我们有时会需要返回子线程的处理结果,但不幸的是Runable接口是void类型没有返回值的。有人可能会想到用实例变量的方法实现此需求。实例变量的方式当然也是可以的,在其它文章中已经介绍过了,在使用实例变量时要特别注意,因为实例变量有可能会出现线程安全问题。其实在Java中已经为我们提供了这样的接口Callable接口。我们看一下Callable接口的定义。

Java中Future的使用方法

接口中只定义了一个方法call()方法,而不是run()方法,这点要特别注意,它们都可以实现线程的异步执行。下面我们来演示一下。

Java中Future的使用方法

Java中Future的使用方法

我们调用ExecutorService接口submit()方法来添加我们的任务,执行结果和Runable接口没有什么区别。唯一不同就是Runable接口要重写run()方法,Callable接口要重写call()方法。但Callable接口还有一个更强大的功能就是它支持返回类型。通过Callable接口可以返回异步执行后的结果。

Java中Future的使用方法

Java中Future的使用方法

ExecutorService接口submit()方法返回一个Future类型。用Future就可以获取Callable接口中异步执行后的任务数据。我们看两个main线程的输出时间有些不同。这是因为当调用Future接口中的get()方法时,当前线程会被阻塞,一直等待子任务的结束,因为子任务中我们延迟了10秒,所以这两个输出时间有些偏差。Future接口中还有其它几个方法。

Java中Future的使用方法

Java中Future的使用方法

Java中Future的使用方法

Java中Future的使用方法

虽然抛出了异常,但任务还是执行完了。如果我们将参数修改为true,则线程立即中断并且不管当前线程是否执行完。

Java中Future的使用方法

Java中Future的使用方法

Java中Future的使用方法

到此,关于“Java中Future的使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI