这两段代码求解释,为什么重写两次run()方法?

new Thread(new Runnable() {

        @Override
        public void run() {
            for (int x = 0; x < 100; x++) {
                System.out.println("hello" + ":" + x);
            }
        }
    }) {
        public void run() {
            for (int x = 0; x < 100; x++) {
                System.out.println("world" + ":"
                        + x);
            }
        }
    }.start();

不需要两次,一个就够了。第二次那个是不是多余的

感觉是在考察java的重载与重写,重载是在同一个类里有两个或两个以上方法名完全相同但参数列表不同,重写是子类重定义父类的同一个方法,方法名和参数列表都要相同。