gpt4 book ai didi

Java - 如何避免周期性操作执行重叠

转载 作者:行者123 更新时间:2023-12-01 04:35:24 25 4
gpt4 key购买 nike

我的应用程序中需要执行一些周期性操作,例如周期T。目前,我使用的是 Timer.scheduleAtFixedRate(TimerTask, 0, T)。现在我想避免单个操作的重叠(在某些情况下,单个操作可能比 T 花费更多时间)。我读过 Timer 实现使用单个线程来执行操作,因此在标准情况下不会有重叠。问题是,在我的例子中,单个操作不是由传递给 Timer 的 TimerTask 直接执行的:操作仅从它开始,并且是异步执行的。 p>

因此,如果 TimerTask 执行在前一个操作完成之前启动新操作,则可能会出现重叠。相反,如果发生重叠,我想等待先前执行的终止,并在先前执行完成后立即开始新的操作。

获得这种行为的最佳实现是什么?我应该从计时器切换到其他支持吗?它是 Android 环境,所以我更喜欢 Java 标准 (util.concurrent) 或一些基于 Android 的实现,而不是其他基于 Spring Quartz 和其他特定框架的实现。

最佳答案

您可以使用Executors.newScheduledThreadPool(1)为了达成这个。它比 Timer{,Task} 使用起来容易得多。

关于Java - 如何避免周期性操作执行重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com