我正在尝试编写一个计时器程序,该程序可以接受操作以计划在特定时间段后运行。当有新的计划任务时,它应该取消所有旧任务,而仅执行最新的计划任务。
我尝试使用Timer
和ScheduledThreadPoolExecutor
。但是,我在cancel()
上调用Timer
之后,如果我安排新任务,它将抛出IllegalStateException
; ScheduledThreadPoolExecutor
不能取消任务。
我知道我当然可以通过每次创建一个新的Timer
并取消上一个来做到这一点,但是这种方式似乎效率不高。
我可以通过Timer
类来实现吗?如果没有,如何以简单有效的方式做到这一点?