java - ExecutorService 的 invokeAll() 会同时运行任务,或者完全取决于硬件(运行执行程序服务的地方)和网络

标签 java multithreading networking

我有 n 个独立任务,但我的要求是所有独立任务必须同时执行(我想以秒精度执行意味着所有任务必须在同一秒调用,例如 11: 55:05 在上午 11 点 55 分 5 秒调用所有任务。每个任务都与 ngp(硬件盒)交互并获取在墙上渲染的图像的一部分(这里假设每个 ngp 正在生成图像的一部分),因此我需要与 ngp 交互的每个任务同时发送调用通过网络在 ngp 上的时间。

当我invokeAll()时,我调用所有任务(每个任务都与其专用的ngp交互并获取图像的一部分)。 ExecutorServiceinvokeAll() 将尝试同时运行任务,或者硬件上最多可以有多少毫秒的延迟((执行程序服务正在运行的地方))对于每个任务从其调用的第二个开始?这完全取决于硬件((运行执行程序服务的地方)如CPU核心等)和网络吗?

我只是想掌握内部下划线的提示。

最佳答案

Do invokeAll() of ExecutorService will try to run the task at the same time or maximum how many milliseconds delay can be there on hardware((where executor service is running)) for each task from its invoked second?

没有。他们不能同时运行。会有毫秒级的延迟。这也取决于您的线程池大小。即使您创建的线程多于任务数量,也不能保证使用所有线程来执行这些任务。

Is this totally depend on hardware((where executor service is running)like CPU cores etc) and network?

这取决于 cpu 核心数量、线程池大小、任务队列大小和 ThreadScheduler(特定于操作系统)。您无法控制任务执行的时间。

关于java - ExecutorService 的 invokeAll() 会同时运行任务,或者完全取决于硬件(运行执行程序服务的地方)和网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42802175/

相关文章:

networking - 补偿抖动

java - 使用 ByteBuddy 对方法内的对象进行计数的代理

java - 如何确定是什么持有锁并阻塞了我的 Java 线程?

networking - VPN 客户端是如何工作的?

c# - 以下代码如何自动线程安全?

java - 生成随机条形码 - 一个设计问题

c++ - 并行使用主 DNS 服务器和辅助 DNS 服务器进行名称解析

java - 需要帮助在 java 中制作正确的 Action 监听器

带有 ISO-8859-1 的 Java 快速流复制

java - 调度算法存储