我正在开发一个应用程序,我需要执行一个倒计时,让某个计数器每秒都停止,然后显示在一个小部件中。
没问题,使用java类javax.swing.Timer
可以轻松完成,但性能很差。
屏幕上还有其他图形对象,它不够准确,让它从10分钟下降到0需要超过10分钟。
我试过的第一件事就是延时1000毫秒的定时器,这让我失去了很多秒,有时它在更新视图时速度不够快。
其次,我尝试使用延迟为20毫秒的定时器和一个内部逻辑,只有当System.nanoTime()
报告上一次执行的第二个时,才能运行我的动作。
这为我提供了更好的准确性,但是在Java应用程序与旧系统上的其他应用程序一起执行的环境中,它的性能更差。
有没有办法在Java中实现调度程序独立的Timer? 我真的喜欢什么。操作系统独立性并不是一个真正的问题,因此如果本机代码能给我一个好的结果,那么本机代码是一种选择。
更新
我创建了一个示例并将其上传到gist:
https://gist.github.com/bracco23/c160c9591ac216a2eb9452ef9e7d6d95
糟糕的是,这个例子并不像整个项目那么糟糕,我让它运行了整整10分钟,花了大约602秒,2秒延迟不到0.4%,不是真的不好,我不会介意的。
我上传它以显示应用程序的架构,在示例和完整的应用程序中也是如此。
非常感谢你:D