Цель SchedulableState - запланировать событие для состояния в определенное время. Например, аукцион становится неактивным по истечении установленного срока, так что он прекращает прием заявок. SchedulableState особенно полезен в таких случаях использования.
SchedulableState планирует событие, событие запускает поток. Поток в основном выполняет транзакцию, которая в большинстве случаев (если вы не выполняете выдачу) потребляет состояние.
Однако, если вы хотите запланировать что-то, выполняющее SchedulableState с использованием Сервиса, как показано ниже:
@CordaService
public class SchedulerService extends SingletonSerializeAsToken {
private AppServiceHub serviceHub;
public SchedulerService(AppServiceHub serviceHub) {
this.serviceHub = serviceHub;
schedule();
}
private void schedule(){
Timer timer = new Timer();
TimerTask task = new Helper();
timer.schedule(task, 2000, 5000);
}
static class Helper extends TimerTask
{
public static int i = 0;
public void run()
{
System.out.println("Timer ran " + ++i);
}
}
}