【发布时间】:2016-07-21 12:39:20
【问题描述】:
请有人建议在这种情况下如何使用 Callable 和 Future
我希望能够为来自不同用户的项目提交多个投标。
我正在开始一个新线程,当中标值返回时,我想返回该值。我如何产生一个新线程并在我有一个值时立即返回一个值。将 Future.get() 作为下一行等待返回值还是返回空值?
public AuctionBid getWinningBid(String itemCode){
Callable<AuctionBid> winningBidCallable = () -> store.getWinningBid(itemCode);
Future<AuctionBid> future = executorService.submit(winningBidCallable);
return Future.get(); // can this return empty object
}
【问题讨论】:
-
您查看过
Future.get()方法的Javadoc 文档吗?它说“如果需要,等待计算完成,然后检索其结果。”。您对此有疑问吗? -
"can this return empty object" 你说的“空对象”是什么意思?它可以返回您可以存储在
AuctionBid引用中的任何内容,包括null、一些缓存实例或新创建的实例。 -
你会想要使用某种回调机制。
-
@HovercraftFullOfEels
Future接口是否不需要某种回调?我的意思是,OP 可以只返回Future。 -
既然 OP 提到他想提交多个投标,我假设他想等到所有列表/一组期货都有结果,然后返回最佳结果。如果是这种情况,那么 OP 应该看看这个问题:stackoverflow.com/questions/19348248/…
标签: java multithreading