java游戏更新和刷新率问题

我在Main类里创建了一个新的thread,新的thread对象使用主类implements的Runnable
程序一运行就会自动执行run()的方法。

我的疑问是这组代码是怎么实现控制游戏每秒画面刷新次数,它具体说了什么?

@Override
    public void run() {
        double drawInterval=1000000000/FPS; //FPS设置为60
        double delta=0;
        long lastTime=System.nanoTime();
        long currentTime;

        while(gamethread!=null) {
            currentTime=System.nanoTime();
            delta+=(currentTime-lastTime)/drawInterval;

            lastTime=currentTime;
            if(delta>=1) {
                update();//更新游戏人物和物品的位置等
                repaint();//重绘
                delta--;
            }

        }
    }