First the start method invokes the run method of the Thread object, wich in turn invokes the run method of the Runnable constructor parameter. Here the run method of the thread is overriden, so it doesn't start the Runnable's run method, only printing "A" instead.