java - 如何暂停/恢复或更改TimerTask的周期时间?

标签 java multithreading locking scheduled-tasks

我最初的目的是每个 xx TimeUnit 执行一段代码,而不是简单地循环它并检查标志。我做了一些研究,发现了两个解决方案:

  1. Timer + TimerTask - 一旦计时器暂停,您必须重新启动另一个计时器。 TimerTask 也是如此。

  2. ScheduledThreadPoolExecutor + Runnable - 与之前的组合相同。但有人说这是增强版。但它仍然没有提供我之前提到的功能。

现在,我正在寻找一种优雅的方法来解决这个问题。也许我应该专注于锁?

最佳答案

我将使用 ScheduledExecutorService 并使用 Future.cancel() 来暂停。并scheduleAtFixedRate再次启动它。

如果您想更改周期,请取消并使用新周期再次添加(假设其未暂停)。

如果您想隐藏此详细信息,您可以创建一个带有 suspend()、resume() 和 setPeriod() 方法的包装器。

关于java - 如何暂停/恢复或更改TimerTask的周期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347155/

相关文章:

performance - 有人用过谷歌性能工具吗?

Java 并发实践 - 示例 14.12

c# - 如何使用 C# 锁定屏幕?

java - 序列化和存储为实例变量的对象

java - 为什么 "new"关键字比赋值效率高这么多?

java - 在图像上绘图

sql - 数据库中不同锁定方案的影响的详细信息?

java - org.hibernate.HibernateException : Current transaction is not in progress

c# - 从引发事件的外部线程更新控件

c# - 延迟某个 Action 一段时间