gpt4 book ai didi

java - 是否有一个 java.util.concurrent 类允许定期启动线程而不阻塞完成?

转载 作者:太空宇宙 更新时间:2023-11-04 06:23:51 25 4
gpt4 key购买 nike

我有以下要求。

我正在尝试构建一个模拟器,该模拟器将在系统上生成负载以进行负载测试。我希望线程每 X 毫秒启动一次,每个线程将启动一个需要 Y 毫秒的任务,其中 Y 可能比 X 高 2 或 3 个数量级。

我原以为我可以使用 ScheduledExecutorService.scheduleAtFixedRate()。它没有起作用。我看到以下 javadoc 注释解释了原因:

If any execution of this task takes longer than its period, then subsequent executions may start late, but will not concurrently execute.

并发执行正是我想要的。我想在单独的线程中启动很多任务,让它们做任何事情,使用一个大线程池,并在它们完成时完成。重点是生成用于测试负载的负载。

java.util.concurrent 中有什么可用的东西可以让我这样做吗?我正在阅读这些 javadoc,但它们现在让我头晕目眩。

最佳答案

您可以使用 scheduleAtFixedRate(control, 10l, 1l, TimeUnit.SEDONDS) 调度程序来创建和执行新任务(在其他线程中),类似于:

    final ScheduledExecutorService pool = new ScheduledThreadPoolExecutor(100);
Runnable control = new Runnable()
{
public void run() {
Runnable task = new Runnable() {
public void run() {
// do work here
}
};
pool.execute(task);
};
};
pool.scheduleAtFixedRate(control, 5l, 1l, TimeUnit.SECONDS);

关于java - 是否有一个 java.util.concurrent 类允许定期启动线程而不阻塞完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27071487/

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