gpt4 book ai didi

java - 使用 Java 进行负载测试 - 计时器任务与调度程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:10 25 4
gpt4 key购买 nike

我需要使用 Java 执行负载测试,其中一种测试策略要求在每 y 时间段内触发 x 个线程,持续 z 分钟,此后在负载测试持续时间内运行的线程总数保持恒定(例如,总共有 100 个线程,以 5 秒的间隔启动 10 个线程,直到所有 100 个线程都已启动,并在指定的测试持续时间内继续保持所有 100 个线程运行(一旦完成执行,它应该重新启动),比如说小时)

我曾尝试使用计时器任务,但它似乎有局限性,线程池调度程序会是更好的选择吗?什么是最好的方法?

public class MyTask extends TimerTask{
public void run() {
System.out.println("STARTING THREAD "+ counter +" "+ new Date());
//execute test
counter++;

if (counter > maxIterations) {
MyTask.this.cancel();
return;
}
}

List<TimerTask> MyTaskList = new ArrayList<TimerTask>();
for (int i = 1 ; i <= threadsPerIteration ; i++) {
TimerTask MyTimerTask = new MyTask(NumberOfIterations);
MyTaskList.add(MyTimerTask);

timer.schedule(MyTimerTask, initialDelayMilli, threadDelayMilli);
}

谢谢

最佳答案

不要为每个线程使用 TimerTask。相反,使用单个 TimerTask,每个时间间隔触发一次,您的示例数字每 5 秒一次。

前 10 次 TimerTask 每次触发,它都会产生 10 个线程。在每次后续触发时,它会检查 Activity 线程的数量,并产生足够多的新线程以使总数达到 100,直到测试结束。

关于java - 使用 Java 进行负载测试 - 计时器任务与调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31820555/

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