莘羽专业数码电器网
首页 > 白家电 > Future的使用

Future的使用

Future的使用

在开发多执行绪时,我们有时会需要返回子执行绪的处理结果,但不幸的是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,则执行绪立即中断并且不管当前执行绪是否执行完。

标签:

上一篇 目录 下一章

猜你喜欢

白家电 主题我这才明白...
我这才明白怎么安装实验室回流装置了。 记得那天,我在实验室里负责装修,我的任务是安装一个新的回流装置。对于不太了解化学的朋友来说,回流装置可能听起来很神秘...
白家电 橡胶软管的多样...
在这个充满技术和创新精神的时代,橡胶软管已经不仅仅是一种功能性产品,它们也成为了装饰艺术品、时尚配件甚至是视觉艺术的一部分。它们以其独特的弹性和柔韧性,在...
白家电 餐具消毒设备高...
餐具消毒设备:高效的食品卫生保卫者 什么是餐具消毒设备? 在现代生活中,餐具消毒设备扮演着至关重要的角色。它是一种专门用于清洁和消灭微生物、细菌等有害物质...
白家电 中国一重加氢反...
绿色能源革命:中国一重加氢反应器的创新与应用 随着全球对可再生能源和清洁生产的需求日益增长,化学工业中的加氢技术正迎来新篇章。中国一重加氢反应器作为这一领...

强力推荐