我正在使用ExecutorService来安排将来要执行的任务。在我通过将我的Callable提交到ExecutorService池返回的Future对象上调用get()之后看到一些“奇怪”的行为,其中我的Callable被执行了,我读了一些文档,发现提交的任务将在它之间执行获取提交或最迟在Future对象上调用get()时。
我的问题 - 是否有任何类允许Callables提交给它并且仅在调用get()时执行?在这一点上,似乎只是自己管理Callables并在我准备好执行它们时自己调用call()似乎它完成了我想要的东西,但我想确保已经没有服务了实现了这一点。
简而言之,是否有任何替代ExecutorService可让我控制何时调用Callables提交给它?注意 - 将来我希望它们被调用的时间是可变的而不是确定的,因为我可能决定不调用它们,因此ScheduledExecutorService池在这里不起作用。
非常感谢!
答案 0 :(得分:2)
听起来你真的想要使用Queue<Callable>
而只是轮询队列中的任务。
通过这种方式,您可以随意提交任意数量的任务并按照您的意愿逐一执行。