APP下载
报价宝  ›  科技  › 

Future的使用

报价宝 来源:baojiabao.com 发布时间:2019-11-15 05:50:00 10月02日更新
报价宝综合消息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,则执行绪立即中断并且不管当前执行绪是否执行完。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 报价宝 手机价格 汽车价格 耳机价格 降噪耳机价格