当其中一个 returns 不为空时,ExecutorService 关闭其他线程
ExecutorService shutdown other threads when one of them returns not null
我有 20
个话题。每个线程只对 MongoDB
进行 findOne
查询:
db.myCollection.findOne({"queryKey" : "queryValue"})
所以 findOne
将 return 找到文档的 null
之一。
每当其中一个线程 return 找到文档而不是 null
时,我想关闭其他线程。
有什么办法吗?
我尝试在 ExecutorService
中使用 invokeAny
。但这是 return 完成 成功 的结果。在我的案例中,成功 的情况是 findOne
return 找到文档而不是 null
。
注意:我的真实示例比 findOne
更复杂(这就是为什么我使用多线程,而不仅仅是顺序调用)
根据invokeAny
的定义,返回第一个成功的结果。要在您的用例包装 findOne
中使其工作并在 null
时抛出异常,使其不成功。
我有 20
个话题。每个线程只对 MongoDB
进行 findOne
查询:
db.myCollection.findOne({"queryKey" : "queryValue"})
所以 findOne
将 return 找到文档的 null
之一。
每当其中一个线程 return 找到文档而不是 null
时,我想关闭其他线程。
有什么办法吗?
我尝试在 ExecutorService
中使用 invokeAny
。但这是 return 完成 成功 的结果。在我的案例中,成功 的情况是 findOne
return 找到文档而不是 null
。
注意:我的真实示例比 findOne
更复杂(这就是为什么我使用多线程,而不仅仅是顺序调用)
根据invokeAny
的定义,返回第一个成功的结果。要在您的用例包装 findOne
中使其工作并在 null
时抛出异常,使其不成功。