Java ExecutorService类,其中用户控制调用可调用项的时间

Java ExecutorService类,其中用户控制调用可调用项的时间,java,android,executorservice,callable,Java,Android,Executorservice,Callable,我使用ExecutorService来安排将来要执行的任务。在看到一些“奇怪”的行为之后,在我对通过将我的Callable提交到ExecutorService池而返回的未来对象调用get()之前,我执行了我的Callable,我阅读了一些文档,发现提交的任务将在提交时间之间或最晚在get()时执行对未来对象调用 我的问题-是否有任何类允许将Callables提交给它,并且只在对其调用get()时执行?在这一点上,似乎只是自己管理这些可调用项,并在我准备好执行它们时自己调用call(),似乎可以实

我使用ExecutorService来安排将来要执行的任务。在看到一些“奇怪”的行为之后,在我对通过将我的Callable提交到ExecutorService池而返回的未来对象调用get()之前,我执行了我的Callable,我阅读了一些文档,发现提交的任务将在提交时间之间或最晚在get()时执行对未来对象调用

我的问题-是否有任何类允许将Callables提交给它,并且只在对其调用get()时执行?在这一点上,似乎只是自己管理这些可调用项,并在我准备好执行它们时自己调用call(),似乎可以实现我想要的,但我想确保没有已经实现的服务实现了这一点

简言之,除了ExecutorService之外,是否有其他方法可以让我控制何时调用提交给它的可调用项?注意-我希望调用它们的未来时间是可变的,没有确定,因为我可能决定不调用它们,因此ScheduledExecutorService池在这里不起作用


多谢

听起来您真的想使用
队列
,而只是轮询队列中的任务


这样,您可以提交任意多个任务,并根据自己的意愿执行它们—一个接一个

这与同步调用
call()
有何不同?这些线有什么用?不一定。我只是想确认没有服务已经处理了这个问题。给出下面的答案,我怀疑我应该手动完成这项工作(正如你所建议的那样)才是正确的选择!请注意,Future.get()是一个同步调用,它阻止了调用线程的执行,并使其等待可调用线程完成,因此牺牲了可调用线程(应异步运行)的好处,除非您有非常特殊的要求,否则不要在代码中使用和依赖它。自动管理任务执行是ExecutorService的一项功能,如果这不符合您的需求,请不要使用它,只要您需要,就直接在代码中使用callable.call()/runnable.run()。酷。感谢您的确认和快速响应!:)