Tag: futureorservice

如何使用ExecutorService进行轮询,直到结果到达

我有一个场景,我必须轮询远程服务器检查任务是否已完成。 一旦有,我会进行不同的调用以检索结果。 我原本认为我应该使用带有scheduleWithFixedDelay的SingleThreadScheduledExecutor进行轮询: ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); ScheduledFuture future = executor.scheduleWithFixedDelay(() -> poll(jobId), 0, 10, TimeUnit.SECONDS); public void poll(String jobId) { boolean jobDone = remoteServer.isJobDone(jobId); if (jobDone) { retrieveJobResult(jobId); } } 但是因为我只能提供一个Runnable来scheduleWithFixedDelay不能返回任何东西的scheduleWithFixedDelay ,所以我不明白future什么时候会完成。 调用future.get()甚至意味着什么? 我在等什么结果? 我第一次检测到远程任务已经完成,我想执行一个不同的远程调用并将其结果设置为future的值。 我想我可以使用CompletableFuture,我会转发到我的poll方法,然后将它转发到我最终完成它的retrieveTask方法: CompletableFuture result = new CompletableFuture(); ScheduledFuture future = executor.scheduleWithFixedDelay(() -> poll(jobId, result), 0, 10, TimeUnit.SECONDS); public void poll(String […]