Я пытаюсь запустить метод после задержки со следующим кодом:
ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
exec.scheduleAtFixedRate(new UpdateTDDBRejections(), 5, 10, TimeUnit.SECONDS);
Он должен дождаться прохождения задержки, вызвать метод «UpdateTDDBRejections», который находится в другом, Runnable, классе, который распечатает фразу, а затем заснет, а затем снова распечатает фразу и т. д. и т. д.
Он этого не делает, он просто печатает фразу и затем останавливается.
Однако, когда я настроил это так:
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?
РЕДАКТИРОВАТЬ: это класс UpdateTDDBRejections.
public class UpdateTDDBRejections implements Runnable
{
UpdateTDDBRejections()
{
System.out.println("garbage garbage garbage");
}
@Override
public void run()
{
}
}
UpdateTDDBRejections
? - person Tavian Barnes   schedule 08.05.2015run()
, а не на конструктор. Конструктор запускается только один раз, когда вы делаетеnew UpdateTDDBRejections()
- person Tavian Barnes   schedule 08.05.2015