jjzjj

java - Future.cancel() 没有取消 ScheduledExecutorService 的计划执行

我正在安排一个任务:ScheduledExecutorServicedataService=Executors.newScheduledThreadPool(1);FuturedataTimerHandle=dataService.scheduleAtFixedRate(runnable,100,freq,TimeUnit.MILLISECONDS);这很好用,没有缺陷。但是,当某个标志因用户操作而变为true时,任务不再需要定期执行,只需执行一次即可。然后,我尝试取消任务并仅提交一次,如下所示:if(!dynamicUpdate){dataTimerHandle.cancel(tru

由回调驱动的 Java/Scala Future

简短版本:如何创建Promise哪个在回调触发时完成?长版:我正在开发一个处理第三方SOAP服务的应用程序。来自用户的请求同时委托(delegate)给多个SOAP服务,汇总结果并发回给用户。系统需要可扩展,并且应该允许多个并发用户。由于每个用户请求最终会触发大约10个Web服务调用,并且每个调用会阻塞大约1秒,因此系统需要设计为非阻塞I/O。我在这个系统的PlayFramework(Java)中使用ApacheCXF。我已设法生成异步WS客户端代理并启用异步传输。我无法弄清楚的是,当我委托(delegate)给多个Web服务代理并且结果将作为回调获得时,如何将Future返回给Pla

java - 如何中断 Future,但仍然等待它完成?

我有一系列使用ExecutorService排队的作业。如果用户点击“取消”,那么我需要通知那些工作他们应该尽快停止。但是,有时它们位于代码的关键部分,必须在父线程继续执行之前完成。我怎样才能做到这一点?我不想使用我自己的取消标志,因为那不会导致sleep/等待退出。我认为这段代码可以工作,但它不符合我的要求:while(true){//Dothisinaloop.Ifourthreadisinterrupted,wecallcancelonthethreads(totrytogetthemtohurryupbyskippingnon-essentialstuff),butwestil

java - 如何在 Java 中异步使用 Akka Futures

我正在Java服务层中调用,如下所示;Futurefuture=Patterns.ask(myActor,message,timeout);Responseres=(Response)Await.result(future,timeout.duration());我已经阅读了Akka文档并意识到不推荐这样的阻塞。我需要将响应对象返回给调用方法。是否可以通过我的Java服务与Akka异步执行此操作?我尝试使用future.onSuccess方法来执行此操作,但是onSuccess方法不允许返回值,因此我无法返回该值。 最佳答案 在线程

java - 等待取消的 future 真正完成

我有一个SwingWorker,它调用一些不检查线程中断的代码。在调用worker.cancel(true)之后,worker.get()方法将立即抛出CancellationException(这是应该的).但是,由于后台任务的代码从不检查其线程是否被中断,因此它会愉快地继续执行。有没有标准的方法来等待后台任务真正完成?我希望显示“正在取消...”消息或类似的消息并阻止直到任务终止。(我敢肯定,如有必要,我总是可以在工作类中使用标志来完成此操作,只是寻找任何其他解决方案。) 最佳答案 我试了一下这个,这就是我想出的。我正在使用Co

java - 从不同地方调用时不能在方法参数中使用 List<Future<?>>

在我的代码中,我有多个List>实例我想要一个单一的方法来处理等待它们完成的过程。但是我得到一个编译器异常,告诉我actualargumentList>cannotbeconvertedtoList>.这是方法头:publicvoidwaitForIt(>params)这就是它的名字:...List>actions=newArrayList>();waitForIt(actions);我需要这个来为List>>工作以及其他几个。 最佳答案 使用这个:publicvoidwaitForIt(List>params)当你有List和Li

java - Guava future 如何上链?

我正在尝试创建一个小型服务来接受文件上传、解压缩然后删除上传的文件。这三个步骤应该作为future链接起来。我正在使用GoogleGuava库。工作流程是:Afuture下载文件,如果操作完成,则afuture解压文件。如果解压缩完成,将来会删除原始上传的文件。但老实说,我不清楚我将如何链接future,甚至如何以Guava的方式创建它们。文档简明扼要且不清楚。好的,有transform方法,但根本没有具体示例。chain方法已弃用。我想念RxJava库。 最佳答案 Futures.transform不像RxJava那样可以流畅地链

java - 在 Java 中将监听器变成 future

我正在尝试将一个监听器变成一个Future,用于异步连接。我还不习惯使用javafutures,我对javascriptpromises有一些经验,但我不知道如何用java编写它(我在Java8中看到“CompletableFuture”可能会解决我的问题,不幸的是我坚持使用Java7)。这是我到目前为止所做的:publicFuturecheckEmailClientConfiguration(finalEmailClientConfigurationconfig){finalFuturefuture=???;//InsomeotherlanguagesIwouldcreateadef

java - 如何使用 ExecutorService 轮询直到结果到达

我有一个场景,我必须轮询远程服务器以检查任务是否已完成。完成后,我会进行不同的调用以检索结果。我最初认为我应该使用SingleThreadScheduledExecutor和scheduleWithFixedDelay进行轮询:ScheduledExecutorServiceexecutor=Executors.newSingleThreadScheduledExecutor();ScheduledFuturefuture=executor.scheduleWithFixedDelay(()->poll(jobId),0,10,TimeUnit.SECONDS);publicvoidp

java - 在 RxJava 中超时取消任务

我正在试验RxJava和Java8的CompletableFuture类并且不太了解如何处理超时情况。importstaticnet.javacrumbs.futureconverter.java8rx.FutureConverter.toObservable;//...ObservabledoSomethingSlowly(){CompletableFuturetask=CompletableFuture.supplyAsync(()->{//thiscallmaybeveryslow-ifittakestoolong,//wewanttotimeoutandcancelit.ret