问题标签 [completion-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
810 浏览

java - 为什么java会创建错误以将对象转换为可调用对象?

我正在尝试运行 CompletionService 来执行线程数。这是我的代码

Java 在 list.add 处显示运行时错误。
错误:-(不能转换为 java.util.concurrent.Callable)。

0 投票
1 回答
312 浏览

java - PriorityExecutor 和 ExecutorCompletionService,可以吗?

我已经基于 http://funofprograming.blogspot.co.il/2013/11/priorityexecutorservice-for-java.html实现了一个 PriorityExecutor 并 在 Java 中指定任务顺序执行

但是我想使用ExecutorCompletionService并把它交给PriorityExecutor

但是我得到以下执行:

似乎完成服务QueueFuture从我的 Comaprable Future 中创建了自己的 Future (a )。

有人用 ExecutorCompletionService 实现了 PriorityExecutor 吗?如果是这样,我是否需要扩展 ExecutorCompletionService ?

0 投票
0 回答
49 浏览

java - CompletitionService:轮询超时而不每次都重置它?

我有一套任务必须在一定时间内完成,否则打断他们。特别是通过FTPClient类在不同的服务器上上传相同的文件。

我认为这CompletionService是我的问题的最佳解决方案,但唯一的问题是poll在可调用任务返回的每个元素处更新使用的超时,对吗?对不起,如果我不是,这是我第一次使用这种机制。

无论如何,这不是我要找的,因为我想为所有提交的任务的完成设置一个上限,而不是下一个任务完成的上限!

这个问题有什么解决方案/解决方法吗?

0 投票
2 回答
556 浏览

java - 使用 CompletionService 时强制执行 executorService.awaitTermination

我正在尝试提交多个任务并在可用时获取结果。但是,在循环结束后,我必须强制所有任务在指定的时间内完成。如果不是,则抛出错误。最初,我所拥有的只是 executorService 的 invokeAll、shutdown 和awaitTermination调用,它们用于确保所有任务完成(无论是否出错)。我迁移了代码以使用CompletionService来显示结果。我在哪里可以在 CompletionService 调用中强制执行 awaitTermination 子句?

换句话说,我如何利用 CompletionService 的超时?

编辑:

我的初始代码如下所示。问题是我正在遍历未来列表,然后将它们打印为已完成。但是,我的要求是显示在 FCFS 基础上完成的那些。

0 投票
1 回答
619 浏览

java - 通过 CompletionService 检查取消的任务

我正在研究 CompletionService 类,我发现将提交队列与完成队列分离非常有用。

但我也错过了一种轮询/取消任务的方法(这可以被认为以某种方式完成)。它可以以某种方式轻松完成吗?

编辑:在检查了一些答案后,我意识到发生了什么。CompletitionService 以与提交的作业相同的顺序返回。如果您运行作业 a、b 和 c;在 a 工作时取消 b 和 c;最后轮询completionService,直到a taks 终止才会通知b 和c 的取消。另外,我意识到,如果您关闭执行程序而不是取消单个任务,那么仍在队列中的那些任务不会到达完成服务,即使它们的取消在活动任务尚未结束时完成。

EDIT2:好的,我添加了一个完整的测试用例

我期望输出如下:

但取而代之的是:

我什至尝试使用 PriorityBlockingQueue 作为 CompletionService 的队列,Comparator.<Future<String>,Boolean>comparing(Future::isCancelled).reversed()但它也没有工作(我猜如果元素改变状态它不会求助)

0 投票
1 回答
1981 浏览

java - Java在方法内添加关闭钩子

在我的代码中,我使用 CompletionService 和 ExecutorService 来启动一堆线程来执行某些任务(这可能需要很多时间)。所以我有一个方法可以创建 ExecutorService 和 CompletionService,然后开始提交线程,然后获取结果。我想添加一个关闭挂钩以优雅地关闭执行程序(我知道我可能应该处理释放资源而不是执行程序关闭,但在我的情况下,每个线程都有自己的资源,所以优雅地关闭它们可能是一个很好的解决方案我认为)。

出于这个原因,我编写了以下代码

您认为这是一个合理的解决方案,还是使用本地类注册和注销关闭挂钩是不安全的?

提前致谢

问候

0 投票
0 回答
25 浏览

java - ProgressBar 和 ExecutorService

我有一个按钮,单击该按钮时需要生成一个带有 ProgressBar 的对话框来跟踪 CompletionService 的任务完成情况。在将其标记为重复之前,我不认为这是一个 EDT 问题,因为 ProgressBarRunnable 是单独的线程。

以下是按钮单击和相关工作人员的代码:

0 投票
1 回答
349 浏览

java - 如何在 ExecutorCompletionService 上使用模拟

我正在使用 ExecutorCompletionService 和下面的方法调用

现在正在编写 Junit 和 Mockito,我想模拟以上两个调用。我怎样才能做到这一点?

0 投票
1 回答
383 浏览

java - CompletionService 中的重试策略

我需要为通过 ExecutorCompletionService 调用 API 配置重试策略。

示例代码:

为调用 API 时抛出的 TimeoutException 实施重试策略的最佳方法是什么?

0 投票
0 回答
82 浏览

multithreading - 实现自定义执行器

在下面的示例中,如果我在ExecutorImpl不使用的情况下实现Thread,则taskCompletionService.submit即使它返回,也会被阻止Future。是否可以不阻止submit但不使用Threadin ExecutorImpl