2010-12-11 75 views
4

我刚刚在一些代码中遇到了这个问题,而且我很困惑。Java Swing定时器的负延迟

timer = new Timer(-10, new 
     ActionListener() 
     { 
      //Do some stuff 
     }); 

摆动Timer对象中的负(或零)延迟的意义是什么?根据API,第一个事件立即被解雇,但是,-10和负-100之间的区别是什么?在我的代码中,它们看起来功能不同,但我无法完全确定它对Timer对象所做的更改。

回答

5

javadoc说:“如果延迟小于或等于零,定时器会在启动后立即触发。”

所以答案是没有区别。您看到的明显差异可能仅仅是您的应用程序和/或运行时系统中的非确定性的后果。

随访

所以后来是每个后续事件前一后,立即解雇以及与任何明显的“时滞”系统只是产品?

延迟可能只是因为线程切换非确定性,以及Swing Timer使用一个线程执行所有计时器的事件侦听器的事实。

您应该可以阅读关于java.swing.Timerjava.util.Timer的javadoc以及它们链接的其他文档。

+0

这很有道理。那么,是不是每个后续事件都会在它之前立即被触发,而任何明显的“延迟”只是系统的产物? – chimeracoder 2010-12-11 03:54:21