Я только что импортировал и начал использовать ScheduledExecutorService в своей программе, и я получаю сообщение об ошибке компиляции с примером использования из их документации:
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
Я занимаюсь разработкой в Android Studio (версия 3.2.4). Я также пытался заставить свой проект использовать Java версии 1.8, но это ничего не сделало. (В проекте обычно используется Java 1.7)
Ошибка следующая:
ошибка: метод execute в классе ThreadPoolExecutor не может быть применен к данным типам;
требуется: Runnable
найдено: без аргументов
причина: фактические и формальные списки аргументов различаются по длине
Я не использую ThreadPoolExecutor, и, насколько я могу судить, в приведенном выше примере корректно вызывается все методы ScheduledExecutorService с правильным количеством аргументов.
Update
Я протестировал один только пример кода в его собственном файле и попытался скомпилировать его в терминале, и он отлично компилируется. Так что это означает, что что-то не так с моим окружающим кодом или средой. Я рассмотрю его подробнее и дополню этот вопрос более подробной информацией по мере нахождения.