В Java при использовании ScheduleAtFixedRate возможно ли выполнение задачи до того, как ScheduledFuture, возвращенный ScheduleAtFixedRate, будет назначен?
Например, может ли следующий код вызвать исключение NullPointerException?
public class RaceCondition
{
private ScheduledFuture scheduledFuture;
private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);
public void start()
{
scheduledFuture = scheduledExecutorService.scheduleAtFixedRate(this::doWork, 0, 1, TimeUnit.MILLISECONDS);
}
private void doWork()
{
scheduledFuture.cancel(false); // is it possible that scheduledFuture hasn't been assigned yet?
}
public void stop()
{
if (scheduledFuture != null) {
scheduledFuture.cancel(false);
}
scheduledExecutorService.shutdown();
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... o-start-ex
Мобильная версия