If you implement Runnable , then in previous versions of Java this was the only way to extract a big stack and make, say, a deep recursion possible.
And so it is trite more convenient - everywhere to write static is not only lazy, but also unsympathetic. In the code that you gave one line of code and one extra method replaces thousands of static 's.
I personally, I use not one run , but the methods init , solve , finish , where I declare input and output in init , I do flush for the output stream in finish , and in solve I just write a solution to the problem. Thus, using templates in your favorite IDE, you can make a convenient template in such a way that all this standard routine (I / O) is not written a thousand times, and the IDE itself generated the code, and you just wrote the solution to solve .
to Dex: who prevents you from simply making the run method, you don't need to implement Runnable for this :)