为什么在ScheduledExecutorService事件之后调用方法有时只能工作?

时间:2015-04-29 09:24:53

标签: java methods scheduledexecutorservice

给定以下代码,其中timerScheduledExecutorService对象,而runThisRunnable对象,用于更改JButton的外观。

Sound.play();
timer.schedule(runThis, 100, TimeUnit.MILLISECONDS);

总是会调用Sound.play(),但是当我尝试

timer.schedule(runThis, 100, TimeUnit.MILLISECONDS);
Sound.play();

有时只会调用该方法。我在KeyListener keyPress方法中有这些方法,有时,当我快速反复按键时,每次都不会调用Sound.play()方法。

为什么有时只调用该方法而不是其他时间?另外,我注意到,通常情况下,当前一个100毫秒结束时我重复一个键时,声音将无法播放。

编辑:我还尝试将KeyPressed方法的内容分成自己的方法。换句话说,我这样做了:

public void keyPressed(KeyEvent e) {
    pressed();
}

public void pressed() {
    timer.schedule(runThis, 100, TimeUnit.MILLISECONDS);
    Sound.play();
}

我还注意到,当使用单独的方法时,即使在Sound.play()方法之前放置timer.schedule(),声音也会偶尔跳过。有什么可以解释这个?

0 个答案:

没有答案