我在我的应用程序中执行了一些定期操作,比如句号T
。目前,我正在使用Timer.scheduleAtFixedRate(TimerTask, 0, T)
。现在我想避免单个操作的重叠(在某些情况下,单个操作可能比T
花费更多时间)。我读过Timer
实现使用单个线程来执行操作,因此在标准情况下不会重叠。问题是在我的情况下,单个操作不是由传递给TimerTask
的{{1}}直接执行的:操作只是从它开始,并且它们是异步执行的。
因此,如果Timer
执行在前一个操作完成之前开始新操作,则可能会重叠。相反,如果发生重叠,我想等待上一次执行的终止,并在上次完成后立即开始新的操作。
获得此行为的最佳实现是什么?我应该从Timer切换到另一个支持吗?它的Android环境,所以我更喜欢Java标准(TimerTask
)或一些基于Android的实现,而不是基于Spring Quartz和其他特定框架的其他实现。