Java中Future的使用方法
这篇文章主要介绍“Java中Future的使用方法”,在日常操作中,相信很多人在Java中Future的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Future的使用方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
我们提供的服务有:网站制作、网站建设、微信公众号开发、网站优化、网站认证、藤县ssl等。为成百上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的藤县网站制作公司
在开发多线程时,我们有时会需要返回子线程的处理结果,但不幸的是Runable接口是void类型没有返回值的。有人可能会想到用实例变量的方法实现此需求。实例变量的方式当然也是可以的,在其它文章中已经介绍过了,在使用实例变量时要特别注意,因为实例变量有可能会出现线程安全问题。其实在Java中已经为我们提供了这样的接口Callable接口。我们看一下Callable接口的定义。
接口中只定义了一个方法call()方法,而不是run()方法,这点要特别注意,它们都可以实现线程的异步执行。下面我们来演示一下。
我们调用ExecutorService接口submit()方法来添加我们的任务,执行结果和Runable接口没有什么区别。唯一不同就是Runable接口要重写run()方法,Callable接口要重写call()方法。但Callable接口还有一个更强大的功能就是它支持返回类型。通过Callable接口可以返回异步执行后的结果。
ExecutorService接口submit()方法返回一个Future类型。用Future就可以获取Callable接口中异步执行后的任务数据。我们看两个main线程的输出时间有些不同。这是因为当调用Future接口中的get()方法时,当前线程会被阻塞,一直等待子任务的结束,因为子任务中我们延迟了10秒,所以这两个输出时间有些偏差。Future接口中还有其它几个方法。
虽然抛出了异常,但任务还是执行完了。如果我们将参数修改为true,则线程立即中断并且不管当前线程是否执行完。
到此,关于“Java中Future的使用方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
本文名称:Java中Future的使用方法
本文链接:http://hbruida.cn/article/jepepi.html