垂直同期をとった画面更新をしたいんだけど、

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
DisplayMode dm = gd.getDisplayMode();
int rr = dm.getRefreshRate();
if (rr == DisplayMode.REFRESH_RATE_UNKNOWN) rr = 60;

new java.util.Timer().scheduleAtFixedRate(new TimerTask(){
public void run(){
repaint();
}
}, 0, 4000 / rr);

だとうまくいかないっす。
どうすりゃいいんすか?