gpt4 book ai didi

Java Scheduled Executor 服务功能

转载 作者:行者123 更新时间:2023-11-29 05:49:41 24 4
gpt4 key购买 nike

我正在设计一个服务器,我需要在其中安排数千个任务。该任务每 5 秒执行一次。 scheduledexecutorservice 是否能够准确地处理数以千计的任务?我试图在一个线程中进行计时。但实际任务将在线程池中执行。谢谢

我不确定它到底是如何工作的,所以如果有人能澄清这一点,我们将不胜感激!

最佳答案

ScheduledExecutorService由线程池支持。粗略地说,您可以使用以下等式计算无延迟地并发运行任务所需的线程数:

minimal number of threads in the pool is equal to average number of tasks executed per second times average task run time

例如平均你开始 2 个任务需要 3 秒(平均)完成,你需要 6 个线程。当然,这是假设随着时间的推移任务分配相当均匀。

您还可以使用 Executors.newCachedThreadPool()理论上可以同时运行无限数量的任务。显然可用内存和上下文切换的数量将大大减少这个数字。

如果您的使用场景是:每五秒在完全相同的时间点运行数千个任务计划 - JVM 或任何其他平台都无法处理。即使您有数千个线程,您也会受到 CPU 内核数量的限制。准确性在很大程度上取决于任务的性质(CPU 密集型?阻塞 I/O?)

关于Java Scheduled Executor 服务功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14404815/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com