 <p>I think you have started multiple thread on the same object</p> <p>you should use synchronized block to run thread-safe code,</p> <pre><code>synchronized(this){ long currentTime = System.nanoTime(); long targetFPS = 1000; long delta; while(GameConstants.running) { delta = System.nanoTime() - currentTime; if(delta/1000000000 &gt;= 1) { System.out.println(delta); currentTime = System.nanoTime(); } } } </code></pre> <p><strong>After Updating Source Code</strong></p> <p>Yeah! here, you are calling run() method and start both...</p> <pre><code>game.start(); game.run(); </code></pre> <p>remove calling run method explicitly, you will get desired result :)</p>