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