从c++定时器创建自定义java定时器
Create custom java timer from c++ timer
我有一个c++自定义定时器的以下实现,由http://www.cplusplus.com/的一个用户提供,我现在找不到他的帖子。
struct timer
{
typedef std::chrono::steady_clock clock;
typedef std::chrono::milliseconds ms;
void reset() { start = clock::now(); }
unsigned long long ms_ellapsed() const
{
return std::chrono::duration_cast<ms>(clock::now() - start).count();
}
private: clock::time_point start = clock::now();
};
我在while循环中使用它来检查x ms是否已经失效,如果是,则重置为0 ms。下面是一个例子:
timer t;
while(true) {
if (t.ms_ellapsed() > 5133) {
t.reset();
}
}
我想为android项目创建一个类似的java实现,但我不熟悉java计时器。我找到了这个java定时器实现的代码片段:
Timer timer = new Timer();
timer.schedule( new TimerTask() {
public void run() {
// do your work
}
}, 0, 60*1000);
这个java实现是我应该用来模拟c++定时器吗?如果是这样,我需要添加什么来获得与c++计时器相同的功能。如果不是,有什么更好的解决方案?
提前感谢!
我相信这就是你正在寻找的答案。您提供的示例代码片段每分钟(60 * 1000)运行一次计时器,这个示例每100毫秒运行一次,如果这是您想要的,可能会提供更好的保真度。它不会像c++示例那样运行无限循环,但您可以缩短POLLING_PERIOD_MS
以进行补偿。
import java.util.Timer;
import java.util.TimerTask;
class TimerExample {
private static final int POLLING_PERIOD_MS = 100;
private static final int RESET_PERIOD_MS = 5133;
private static long start = System.currentTimeMillis();
public static void reset() {
start = System.currentTimeMillis();
}
public static long ms_ellapsed() {
return System.currentTimeMillis() - start;
}
public static void main(String[] args) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (TimerExample.ms_ellapsed() > RESET_PERIOD_MS) {
TimerExample.reset();
}
}
}, 0, POLLING_PERIOD_MS);
}
}
相关文章:
- Ardunio UNO解决了多个重叠的定时器循环
- 我们能否在stm32f中使用硬件定时器控制两个独立的进程
- Arduino Nano:A4988 使用串行输入时通过定时器进行步进控制不稳定
- 没有信号处理程序的POSIX定时器的目的是什么?
- 在定时器回调函数中使用 Sleep() 会导致C++出现问题吗?
- 如何在Qt中修改QWebsocket定时器
- 为什么日食总是发生错误"An internal error occurred during: "通知选择侦听器". java.lang.StackOverflowError"
- 运行自定义调试器 JAVA
- C++Windows中的高分辨率定时器库
- 如何用单个信号处理程序解决这个多linux定时器的问题
- C#/.NET定时器和Win32睡眠函数都是不精确的
- Udp 在 QT 定时器信号中写入数据报
- AVR CTC模式下的16位定时器
- Linux C++定时器与软实时支持
- 在Qt中实现精确定时器
- 在不中断串行的情况下禁用Arduino上的定时器0中断
- 跨平台C++高精度事件定时器实现
- 非阻塞定时器C++
- 如何使用QTextStream读取行一次一个,使用定时器
- 从c++定时器创建自定义java定时器