The trick is that inside method increment(), what is incremented is not the static member count, rather the method-argument count, so the static member count stays 0 and then inside run incremented by 5 and prints 5 to the screen, unless Thread.sleep(1000) throws an InterruptedException and this is possible too.