いろいろな方法があるようですがどうも問題があったりしたので 自分なりのやり方を書いておきます。 いろいろ省略してありますがこんな感じのメインループを作ったとします。 while(!finished) { update(); // メイン処理 Thread.sleep(16); // 休止 } 休止の部分には、60FPSになるように 1000÷60=16.66666...≠16 ミリ秒休止をしています。 しかしこれではメイン処理に時間がかかったとき遅れてしまいます。 実行・休止全部含めて16ミリ秒でないといけないのです。 そこで、以下のように修正します。 while(!finished) { long oldTime = System.currentTimeMillis(); update(); // メイン処理 long newTime = System.currentTimeMillis