gpt4 book ai didi

java - 从不同的线程填充数组

转载 作者:行者123 更新时间:2023-11-29 06:45:48 26 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的程序来创建多个线程来将并发请求发送到特定的 URL。我测量并存储响应时间。我遇到的问题是,尽管我将响应时间数组创建为静态和最终的,但我存储在该数组中的值仅在我处于生成的线程之一时才存在。一旦我退出循环并进入主线程,数组就是空的(包含 0 个值)。所以我的代码片段中的总和始终为零。我意识到我的错误可能是一个非常基本的错误,但不幸的是我无法在网上找到类似的主题。你能给我指出正确的方向吗?谢谢。

public class MyClass {      
static final long[] respTimes = new long[l];

public static void sendRequest() {...}

public static void main(String[] args) throws Exception {
for(int i=0; i<l; i++) {
new Thread("" + i) {
public void run() {
long startTime = System.nanoTime();
sendRequest();
long estimatedTime = System.nanoTime() - startTime;
respTimes[i] = estimatedTime;
}
}.start();
}
for(int i=0; i<l; i++) { sum += respTimes[i]; }
}

最佳答案

这不是问题。您的问题是您在有机会生成结果之前打印出结果。这样做:

Thread [] theThreads = new Thread[10];

for (...) {
theThreads[i] = new Thread() { ... }.start();
}

// now make sure all the threads are done
for (...) {
// this waits for the thread to finish
theThreads[i].join();
}

// now print things out

关于java - 从不同的线程填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5238397/

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