Я пытаюсь написать программу таймера, которая может принимать операции по расписанию для запуска по истечении определенного периода времени. Когда появляется новое запланированное задание, оно должно отменить все старые задания и выполнить только самое новое запланированное.
Я пытался использовать Timer
и ScheduledThreadPoolExecutor
. Однако после того, как я позвоню cancel()
на Timer
, он выдаст IllegalStateException
, если я планирую новые задачи; с ScheduledThreadPoolExecutor
я не могу отменить задания.
Я знаю, что, безусловно, мог бы сделать это, каждый раз создавая новый Timer
и отменяя предыдущий, но этот способ не кажется эффективным.
Могу ли я достичь этого с помощью класса Timer
? Если нет, как это сделать простым и эффективным способом?