java – Suspend the update but keep the rendering

I create an implementation of snakes and scales
and I encounter problems. The game is updated too quickly and I want to limit the number of frames in a loop, or pause so that the movement is really visible. Thread.sleep () but have you solved similar problems that could lead me in the right direction?
I must emphasize that the method of execution is in a abstract class and my current play s & # 39; extends this abstract class

This is the game's loop:

public void run () {
init ();
this.requestFocus ();
long lastTime = System.nanoTime ();
the double amount of hits = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
long timer = System.currentTimeMillis ();
int updates = 0;
int frames = 0;
while running) {
long now = System.nanoTime ();
delta = delta + (now - lastTime) / ns;
lastTime = now;
while (delta> = 1) {
update();
updates ++;
delta--;
}
return();
++ frames;
if (System.currentTimeMillis () - timer> 1000) {
timer = timer + 1000;
if (this.FPSLOG)
System.out.println ("FPS:" + frames + "" + "Ticks:" + updates);
images = 0;
updates = 0;
}
}
Stop ();
}

The rendering method:

private void render () {
BufferStrategy bs = this.getBufferStrategy ();
if (bs == null) {
this.createBufferStrategy (3);
return;
}
Graphics g = bs.getDrawGraphics ();
g.setColor (background);
g.fillRect (0, 0, getWidth (), getHeight ());
draw (g);
g.dispose ();
bs.show ();
}

Implementing the game of these methods:

@Override
public void init () {
setBackground (Color.black);
board = new board ();
player = new Player (Color.cyan, board.getTiles ()[0])
dice = new random ();
}

@Override
public void draw (graphics g) {
board.draw (g);
player.draw (g);
}


@Override
public void update () {
for (int i = 0; i <dice.nextInt (7) +1; i ++) {
player.move ();
}
}