将参数传递给 scheduleWithFixedDelay 中的 运行 函数
Pass an argument to run function in scheduleWithFixedDelay
如何在使用 executor.scheduleWithFixedDelay
调用时在 运行 方法中传递函数
例如。
IntStream.range(0, 4)
.forEach(
i -> executor.scheduleWithFixedDelay(this::runOnce, 0, 5000, TimeUnit.MILLISECONDS));
那么,在这种情况下,我如何将参数传递给 运行Once。例如。如果我想发送 i?
你想要 this::runOnce
到 return 基于 i
的 Runnable
所以如果你想要一个可运行的简单地输出 i
到控制台 class 看起来像:
public class Blah {
public void whatever() {
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(5);
IntStream.range(0, 4).forEach(i -> {
scheduledExecutorService.scheduleWithFixedDelay(runOnce(i),
0, 5000, TimeUnit.MILLISECONDS);
});
}
private Runnable runOnce(int i) {
return () -> System.out.println(i);
}
}
不管 runOnce
returns 是什么,您都可以将方法引用更改为 lambda 并传入 i
作为参数:
IntStream.range(0, 4).forEach(i -> {
executor.scheduleWithFixedDelay(() -> runOnce(i), 0, 5000, TimeUnit.MILLISECONDS);
});
如何在使用 executor.scheduleWithFixedDelay
调用时在 运行 方法中传递函数例如。
IntStream.range(0, 4)
.forEach(
i -> executor.scheduleWithFixedDelay(this::runOnce, 0, 5000, TimeUnit.MILLISECONDS));
那么,在这种情况下,我如何将参数传递给 运行Once。例如。如果我想发送 i?
你想要 this::runOnce
到 return 基于 i
的 Runnable
所以如果你想要一个可运行的简单地输出 i
到控制台 class 看起来像:
public class Blah {
public void whatever() {
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(5);
IntStream.range(0, 4).forEach(i -> {
scheduledExecutorService.scheduleWithFixedDelay(runOnce(i),
0, 5000, TimeUnit.MILLISECONDS);
});
}
private Runnable runOnce(int i) {
return () -> System.out.println(i);
}
}
不管 runOnce
returns 是什么,您都可以将方法引用更改为 lambda 并传入 i
作为参数:
IntStream.range(0, 4).forEach(i -> {
executor.scheduleWithFixedDelay(() -> runOnce(i), 0, 5000, TimeUnit.MILLISECONDS);
});