2016-10-08 9 views
0

タイピングゲームであるjavaでプロジェクトを作成します。 java.util.Timer.scheduleを使用して、タイマーを設定してウィンドウを再描画します。ここでのコード:Windowsシステムでjava Timer.scheduleが正しく動作しません

timer.schedule(new TimerTask() { 
    @Override 
    public void run() { 
     // Some other codes ... 
     repaint(); 
    } 
}, 0, 1000/HZ); 

HZは、Ubuntuの上でも、コードの作業200であるが、私はWindows上でそれを実行すると、それは明らかにUbuntuの上よりもゆっくりだ、私はそのことについて混乱しています。

+0

対象となるHZは何ですか? – Ferrybig

+0

@Ferrybig HZはintで200です。 – lllwwwbbb

答えて

0

タイマーのすべてのタスクを順番に実行するために使用される単一のバックグラウンドスレッドが各タイマーオブジェクトに対応しています。タイマータスクはすばやく完了します。タイマータスクが完了するまでに時間がかかると、タイマーのタスク実行スレッドを「奪い取る」。これは、順番に、後続のタスクの実行を遅延させる可能性があり、最終的に問題のあるタスクが完了したとき(およびその場合)、迅速に連続して実行されます。

参考:https://docs.oracle.com/javase/7/docs/api/java/util/Timer.html

+0

あなたが私にそれを理解させるように心から感謝します。私は 'Timer.schedule'の代わりに' Timer.scheduleAtFixedRate'メソッドを使い、私のプロジェクトもWindows上でうまく動いています。 – lllwwwbbb

+0

Timer.scheduleAtFixedRateについて言及し忘れました。とにかく、あなたはそれを見つけました。うれしかった – Evingle

関連する問題