Я пытаюсь иметь метод срабатывает после того, как задержка со следующим кодом:ScheduledExecutorService не вызывая правильно
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new UpdateTDDBRejections(), 5, 10, TimeUnit.SECONDS);
Он должен ждать задержки, чтобы пройти, вызвать метод «UpdateTDDBRejections», который находится в другой , Runnable, class, который будет распечатывать фразу, а затем спать, а затем снова печатать фразу и т. Д. И т. Д.
Это не делает это, он просто печатает фразу, а затем останавливается.
Однако, когда я поставил его так:
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new Runnable()
{
@Override
public void run() {
// do stuff
System.out.println("garbage garbage garbage");
}
}, 5, 10, TimeUnit.SECONDS);
Он работает, как и следовало ожидать от ScheduledExecutorService. У меня создалось впечатление, что, поскольку я использую Java 8.4, мне не нужно добавлять TimerTask, чтобы сделать эту координату так, как я хочу. Какие-либо предложения? Или я просто не могу вызвать другие классы Runnable с помощью ScheduledExecutorService?
EDIT: Это класс UpdateTDDBRejections.
public class UpdateTDDBRejections implements Runnable
{
UpdateTDDBRejections()
{
System.out.println("garbage garbage garbage");
}
@Override
public void run()
{
}
}
Что делает реализацию 'UpdateTDDBRejections' выглядеть –
@ TavianBarnes добавил. Это не очень славно, я просто пытаюсь назвать класс прямо сейчас, чтобы я мог заставить его работать, а затем его собираюсь получить к нему больше. Это «доказательство концепции», чтобы показать, что я могу это сделать. –
Ум, вы должны перенести работу на метод 'run()', а не на конструктор. Конструктор запускается только один раз, когда вы делаете 'new UpdateTDDBRejections()' –