我正在使用 ExecutorService 来安排将来要执行的任务。在看到一些“奇怪”的行为后,我的 Callable 在我调用 get() 之前在通过将我的 Callable 提交到 ExecutorService 池返回的 Future 对象上执行,我阅读了一些文档并发现提交的任务将在它之间执行提交或最迟在 Future 对象上调用 get() 时。
我的问题 - 是否有任何类允许将 Callable 提交给它并且仅在调用 get() 时执行?在这一点上,似乎我自己管理 Callables 并在我准备好执行它们时自己调用 call() 似乎可以完成我想要的,但我想确保没有服务实现了这一点。
简而言之,是否有任何替代 ExecutorService 的方法可以让我控制何时调用提交给它的 Callable?注意 - 我希望调用它们的 future 时间是可变的并且不确定,因为我可能决定不调用它们,所以 ScheduledExecutorService 池在这里不起作用。
非常感谢!
最佳答案
听起来您真的很想使用 Queue<Callable>
相反,只需轮询任务队列。
这样您就可以提交任意数量的任务并按您的意愿执行它们 - 一个接一个。
关于java - 类似 ExecutorService 的类,用户可以在其中控制调用 Callable 的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444432/