gpt4 book ai didi

java - 在JAVA中的循环中每x秒执行一次具有不同参数的方法

转载 作者:行者123 更新时间:2023-11-30 08:54:13 25 4
gpt4 key购买 nike

如何在一个循环中周期性地运行不同参数的方法?

Iteration 1 : obj.process(index1)
wait 5 seconds...
Iteration 2: obj.process(index2)
wait 5 seconds...
Iteration 3: obj.process(index3)
wait 5 seconds...
and so on...

具体来说,我的目标是重复运行一个方法,下一次迭代需要等待X秒,下一次迭代也需要等待X秒等等。

我的示例代码是错误的,几乎同时启动所有 obj.process(index):

Timer time = new Timer();           
for (final String index : indeces) {
int counter = 0;
time.schedule(new TimerTask() {

@Override
public void run() {
indexMap.put(index, obj.process(index));
}
}, delay);
counter++;
if (counter > indeces.size())
System.exit(0);
}

最佳答案

如果您的代码在它自己的线程中运行,则以下最小示例可能很有用:

public static void main(String[] args) {
Object[][] parameters ={ new String[]{"HELLO", "WORLD"},
new Integer[]{1,2,3},
new Double[]{0.1, 0.9, 5.3}
};
for (int i = 0; i < parameters.length; i++) {
try {
TimeUnit.SECONDS.sleep(1);

doSomething(parameters[i]);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

private static void doSomething(Object[] objects) {
System.out.println(Arrays.toString(objects));
}

在 Java 8 中,一个可能的解决方案是:

public static void main(String[] args) {
Object[][] parameters ={ new String[]{"HELLO", "WORLD"},
new Integer[]{1,2,3},
new Double[]{0.1, 0.9, 5.3}
};
Arrays.stream(parameters).forEachOrdered(p -> doSomething(p));
}

private static void doSomething(Object[] objects) {
try {
TimeUnit.SECONDS.sleep(1);

System.out.println(Arrays.toString(objects));
} catch (InterruptedException e) {
e.printStackTrace();
}

}

关于java - 在JAVA中的循环中每x秒执行一次具有不同参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29510902/

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