毎秒30フレームでシンクをしたくて、こんなんしてるんだけど↓

if ( ( t = tgtTime - System.currentTimeMillis() ) > 0 )
Thread.sleep( t );

なぜか、秒20コマくらいで動く。困ってます。
sleep() の精度がおかしいのかな??


while ( tgtTime > System.currentTimeMillis() )
;

とするとキッチリ動く。

でも長時間 sleep() を一切呼ばないため、端末への負荷が気になってます。
これでも問題ないでしょうか。