Вы хотите, чтобы this::runOnce
возвращал Runnable
на основе i
, поэтому, если вы хотите, чтобы runnable просто выводил i
на консоль, класс выглядел бы так:
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);
}
}